環境
・Struts 2.3.30
今回はenumやインナークラスへのアクセスです
以前も似たようなことを書きました。
enumへのアクセスもstaticフィールドと同様
こんな実装だったとしたら
package fully.qualified.packagename;
public enum EnumName {
ENUM_VALUE,
}
<s:property value="%{@fully.qualified.packagename.EnumName@ENUM_VALUE}" />
完全修飾クラス名を@@で囲いフィールド名を繋げ{}で囲って%を接頭語に、という所は同じですね。
インナークラスへのアクセスは$で繋ぐ
例えば外部のpropertiesから設定値を取ってきてenumを返すUtil/メソッドと
Util内のインナーenumを比較するようなコードはこうなります。
package fully.qualified.packagename;
public class UtilClassName {
public enum InnerEnum {
ENUM_VAL,,,
}
pubic static UtilClassName getInstance() {
return instance;
}
public InnerEnum getSomeEnum() {
return InnerEnum.valueOf(getSomePropertyValue());
}
}
<s:if test="%{@fully.qualified.packagename.UtilClassName@getInstance().getSomeEnum() == @fully.qualified.packagename.UtilClassName$InnerEnum@ENUM_VAL}">
<!-- true -->
</s:if>
※ inner/enumで同時に起こったのでちょっと手間取りました^^