I am trying to migrate my existing code to using Enum and I run into some problems due to my lack experience with Enum. First of all here is my structures. In my EJB
, alongs with Entity, I have a enum class (not sure if it even a class).
public enum Type {
PROFILE_COMMENT,
GROUP_COMMENT
}
At my managed bean myBean.java
, I have
@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);
}
}
then at my JSF,
<h:commandButton value="Test" action="#{myBean.Test(myBean.type.PROFILE_COMMENT)}" />
I got java.lang.ClassNotFoundException:
saying Type
is not a class
The reason I have Type
in my EJB so that I can create an enumerated type for my Entity, so my query would look like this
select c from X c where c.type = Type.PROFILE_COMMENT
You can't access enums like that in EL. JSF has however builtin enum converters for EL. You can just use the enum name as string.
<h:commandButton value="Test" action="#{myBean.Test('PROFILE_COMMENT')}" />