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
In my case that helped me.
Simple compare enum to its value. EL recognize it and also check if that value exists while validating xhtml.
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.