JSP の EL式って全然タイプセーフじゃないし、スクリプトレットの方がコード補完が効いてウマーじゃないですか?
最近 JSP を触っていて、EL式の使い勝手に困惑しています。なんでコード補完効かないんだと。*1
以下のループの例を見てください。
<c:forEach var="i" items="1,2,3"> <c:out value="${i.bytes[0]}:" /> </c:forEach> <hr> <% for (String i : "1,2,3".split(",")) { %> <c:out value="<%= i.getBytes()[0] %>" />: <% } %>
どうです? ほとんど変わらない上にスクリプトレットの方が eclipse でコード補完が効きますよ?
Map の場合
<c:forEach var="i" items="${map}"> <c:out value="${i.key}:${i.value}," /> </c:forEach> <hr> <% for (Entry<String, String> i : map.entrySet()) { %> <c:out value="<%= i.getKey() + \":\" + i.getValue() %>" />, <% } %>
後者は以下の宣言に依存。
<%! // http://d.hatena.ne.jp/unageanu/20071017/1192623693 @SuppressWarnings("unchecked") public <T> T cast(Object obj) { return (T)obj; } %> <% Map<String, String> map = cast(pageContext.findAttribute("map")); %>
cast については static import して共通化できますし、pageContext.findAttribute については SAStruts plugin あたりが自動生成すりゃいいんじゃない? と思ってます。
JSP の現在の流れだと「スクリプトレットを排除してカスタムタグ+EL式で!」って感じがするのだけど、コード補完の効かない EL式よりスクリプトレットの方が生産性が高いんじゃないのかな、と思いました。
反論ほしいです(あと var も)。
- -
「デザイナーが云々」というのは Mayaa で FA ということで。
*1:型が確定しないからどうしようもないんですがね。