OGNLでコレクションの抽出

Struts2JSPカスタムタグ中などで利用できるOGNL式はコレクションに対して便利な操作が簡単に行える。

コレクションからの条件抽出も次のようにして実現できる。

コレクション.{? 条件 }

これで条件に一致する要素のみで構成されたコレクションとなる。

次のようなリストがあるとして

<s:set name="list1" value="{ 'item1', 'item20', 'item300', 'item4000' }"/>

次のようにすると、

<s:set name="list2" value="#list1.{? #this.length()>5 && #this.length()<8 }"/>

長さが6か7の要素のみにフィルタされるので、次のようにすると

<s:iterator value="#list2">
    [<s:property value="top"/>]
</s:iterator>

次の出力となる。

[item20][item300]