OGNLだけでマップのソートをしてみました。こんな感じ。
<%-- このマップを、キーを数値とみなしてソートしたいとする --%> <s:set var="unsorted" value=" #{ '1': 'a', '10': 'b', '2': 'c' }" /> <%-- まずTreeMapのインスタンスを作成する --%> <s:set var="sorted" value="#@java.util.TreeMap@{}" /> <%-- コレは次のようにしても同じ--%> <%--s:set var="sorted" value="new java.util.TreeMap()" /--%> <s:iterator var="e" value="#unsorted.entrySet()"> <%-- キーを文字列型からIntegerへ(やや強引に)変換--%> <s:set value="#sorted.put((new java.lang.Integer(#e.key)), #e.value)" /> </s:iterator>
OGNLの中でもだいぶマニアックな構文を使っている感じ。
Struts2(とOGNL)とはかれこれ2年近くの付き合いですが、初めてこんな構文を使いました。
まあ、これより更にマニアックな、ラムダ式の方は使いまくっているんですけどね(笑)