使用带有枚举的

我有一个JSP portlet需要根据bean属性的值显示不同的标记,该属性是枚举类型

public enum State { CANCELED, COMPLETED } 

我使用以下代码进行切换

         

但它不起作用。 有趣的是,它在两种情况下都返回false。 item对象(在ICEFaces数据表中)是一个带有State getter + setter属性的辅助bean。 我被告知要将枚举与字符串进行比较并使用==运算符,但也许这不是方法。

所以,我的问题是:我如何使用<c:when> 用于将属性与枚举值进行比较的标记?

项目对象( 在ICEFaces数据表中

然后JSTL确实不起作用。 它在视图构建时运行,而不是在视图渲染时。 基本上你可以将它可视化如下:JSTL首先从上到下运行,然后将包含JSF标记的生成结果仅移交给JSF,JSF又从上到下再次运行。 目前,JSTL遇到迭代的JSF数据表#{item} ,它为null ,因此它总是会导致false而JSF将从JSTL中检索这些图像。

您想要使用JSF标记。 我建议将rendered属性结合使用。

   

也许只是我,但我不喜欢在jsp标签中进行字符串比较。 相反,我会提供如下的比较方法:

 public boolean isStateCompleted() { return State.COMPLETED.equals(state); } public boolean isStateCanceled() { return State.CANCELED.equals(state); } 

我会在jsp中引用它们,如下所示:

         

或者像这样: