struts 2 if:compare enum

jef*_*ter 4 java jsp struts2

我有一个Struts 2 jsp,代码如下......

<s:iterator value="categories" id="category" status="iteratorStatus">
<s:if test='#category == "M" '>  snip </s:if>
Run Code Online (Sandbox Code Playgroud)

问题是类别背后的java代码是..

    private static final CategoryEnum[] PRIVATE_VALUES = {A,B,C,M   };
    public static final List<CategoryEnum> VALUES = Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES));
    public List<CategoryEnum> getCategories() {
    return CategoryEnum.VALUES;
}
Run Code Online (Sandbox Code Playgroud)

所以IF语句不起作用,它永远不会评估为真.我试过逃避字符等,但没有成功.

我更愿意使用'category'值回调Action类,并决定该怎么做.例如

<s:if test='renderCategory(#category)>  snip </s:if>
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将#category传回给行动.

所以任何人都可以帮助我解决如何传递值或使Struts IF标记与枚举一起工作.

我已经读过这个:这里帮助不大,但无论如何我都会参考iy:

Struts 2:为什么'if'标签不会评估一个char字符串

有人可以帮我吗?

杰夫波特

jef*_*ter 9

看来我没有查看CategoryEnum类(只附加.class而不是.java).

CategoryEnum类虽然它是枚举,但值是它们自己的类,因此在它上面调用toString()将允许我比较每个类中的值.

<s:iterator value="categories" id="category" status="iteratorStatus">
<s:if test='#category.toString() == "M" '>  snip </s:if>
Run Code Online (Sandbox Code Playgroud)