将Enum值作为参数从JSF传递

我试图将我现有的代码迁移到使用Enum,由于我缺乏Enum的经验,我遇到了一些问题。 首先,这是我的结构。 在我的EJB ,与Entity一起,我有一个枚举类(不确定它是否甚至是一个类)。

 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,

  

我得到了java.lang.ClassNotFoundException:Type不是类

我输入EJB的原因是我可以为我的Entity创建一个枚举类型,所以我的查询看起来像这样

 select c from X c where c.type = Type.PROFILE_COMMENT 

您无法访问EL中的枚举。 然而,JSF内置了EL的枚举转换器。 您可以将枚举名称用作字符串。

  

在我的情况下帮助了我。

简单比较枚举与其价值。 EL识别它并在validationxhtml时检查该值是否存在。