読者です 読者をやめる 読者になる 読者になる

この日記は私的なものであり所属会社の見解とは無関係です。 GitHub: takahashikzn

OGNLだけでMapのソート

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年近くの付き合いですが、初めてこんな構文を使いました。


まあ、これより更にマニアックな、ラムダ式の方は使いまくっているんですけどね(笑)