メンチカツには醤油でしょ!!

ITエンジニア徒然 (AWS/Java/JavaScript/Google Spreadsheets/Jenkins/Mac/外部コミュニティ・勉強会レポ)

Struts2のJSP内でstaticメソッドを呼び出す方法

環境

Struts 2.3.29

EL式とかOGNLを使うのですが

Struts2にはELやOGNLなどがあり下記のサイトが大いに参考になるのですが

sites.google.com

上記のサイトを参考に

<s:if test="%{sampleSign == @fully.qualified.package.ConstantClass@SAMPLE_SIGN_A}">

こんな感じのコードを以前実装しており、既に動いていたので
staticメソッドも同様に呼び出せるだろうと思っていたのですが

<s:hidden value="%{@fully.qualified.package.DateUtil@getString(sampleDateTime)}" />

とか

<input type="hidden" value="<s:property value="@fully.qualified.package.DateUtil@getString(sampleDateTime)" />">

<input type="hidden" value="<s:property value="%{@fully.qualified.package.DateUtil@getString(sampleDateTime)}" />">

これらが当然動くだろうと思ってたらハマってしまいました。
(Date and Time APIのLocalDateTimeが原因かと思ってたが違った...)

struts.xmlにallowStaticMethodAccessを設定

"struts2" jsp static method
でググれば出てくるのですが、Struts 2.3.20 以上は

<constant name="struts.ognl.allowStaticMethodAccess" value="true" />

という設定が必要です。

stackoverflow.com