我正在尝试将现有代码迁移到使用Enum,但由于我缺乏Enum的经验,我遇到了一些问题。首先,这是我的结构。在我的EJB
中,与实体一起,我有一个枚举类(不确定它是否甚至是一个类)。
public enum Type {
PROFILE_COMMENT,
GROUP_COMMENT
}
在我的托管bean myBean.java
,我有
@ManagedBean(name="myBean")
@SessionScoped
public class myBean {
private Type type;
public myBean() {
}
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
public void Test(Type t){
System.out.println(t);
}
}
然后在我的JSF,
<h:commandButton value="Test" action="#{myBean.Test(myBean.type.PROFILE_COMMENT)}" />
我得java.lang.ClassNotFoundException:
说Type
不是班级
我在EJB中有Type
的原因,以便我可以为我的实体创建一个枚举类型,所以我的查询看起来像这样
select c from X c where c.type = Type.PROFILE_COMMENT
答案 0 :(得分:41)
您无法在EL中访问类似的枚举。然而,JSF内置了EL的枚举转换器。您可以将枚举名称用作字符串。
<h:commandButton value="Test" action="#{myBean.Test('PROFILE_COMMENT')}" />
答案 1 :(得分:-1)
就我而言,that帮助了我。
简单比较枚举值。 EL识别它并在验证xhtml时检查该值是否存在。
<c:if test="#{requestManager.selectedRequestType == 'ItemCreate' or requestManager.selectedRequestType == 'ItemChange'}"></c:if>