JSPでMapオブジェクトの内容の表示

JSPjava.util.listの内容を列挙したいときは,


・・・

ってやるけど,じゃあコレクションがMapの場合はどう書くかというお話.

public class Prefecture {
  private String name; //県名
  private int popuation; //人口
  private List cityList; //市町村
  …
}
public class FooAction extends Action{
  public ActionForward execute(…){
    …
    TreeMap prefectureMap = new TreeMap();
    prefectureMap.put(…)
    session.setAttribute("prefMap", prefectureMap);
    …
  }
}

てな感じの場合,

<logic:iterate id="element" name="prefMap">
  <h1><bean:write name="element" property="value.name"/></h1>
  <p>県の人口:<bean:write name="element" property="value.population"/></p>
  <h2>市町村</h2>
  <logic:iterate id="city" name="element" property="value.cityList">
     <bean:write name="city" property="name"/><br/>
  </logic:iterate>
</logic:iterate>

としてあげればOK
注意しないといけないのは,Mapの場合,展開されるオブジェクトはMap.Entry型になっているということ.Mapの中身にアクセスするためには,Entryの中のvalue属性を指定しないといけない.
参考URL:http://www.jajakarta.org/struts/struts1.0/ja/target/documentation/struts-logic.html#iterate

CollectionのSizeをJSPで知りたい

JSP書いてて,とかでまわしているlistのサイズを知りたいな〜というときは,

<bean:size id="listSize" name="cityList"/>

ってやると,cityListの要素数が,listSizeという変数に格納されます.

テーブル表記とかで要素数だけ段を抜いた見出しをつけたいときとかに便利.(下の例)

神奈川県横浜市
川崎市
鎌倉市
藤沢市

参考URL:http://www.jajakarta.org/struts/struts1.0/ja/target/documentation/struts-bean.html#size