JSF Anti-Patterns and Pitfalls
TSS.comより。アンチパターンを必要とするほどJSFの需要がないんだけど,一応メモ。
JSFそのものに馴染みがないんで,PhaseListener問題とかPortlet問題とかよくわからん。
興味深かったのはの"The Map Trick"のところ。
JSPの式言語はあまりにも「プロパティ参照用で〜す」感ありありで式として使うには,ちょっと不便なのだ。「パラメタ付きのメソッド呼べない」ってのを例に上げてたけど,ホントにそうだったっけ?*1
そこで「Mapだけは例外(パラメタ与えられる)」というJSP式言語の特性を利用して,こんなことしてる。
public class MapTrick implements Map { public Object get(Object key) { return new BusinessLogic().doSomething(key); } public void clear() { } public boolean containsKey(Object arg) { return false; } public boolean containsValue(Object arg) { return false; } public Set entrySet() {return null; } public boolean isEmpty() { return false; } public Set keySet() { return null; } public Object put(Object key, Object value) { return null; } public void putAll(Map arg) { } public Object remove(Object arg) { return null; } public int size() { return 0; } public Collection values() { return null; } }
この発想はなかったが,いいのかそれで。:-)
ps.
TSS.comのコメントに「JSF *is* an anti-pattern.」と書いてあって,軽く吹いた。たしかになぁ,Unified ELの遅延評価式がJSFのためだと思うと,少なからず「余計なコトしやがって」とは思うな。
あと,JSPの式言語もGroovy並になってくれ。マジで。
*1:普通のメソッドはNGだけど,getterはパラメタ付きもOKだったような...。遅延評価式も絡むと,また違うのか?