web-dev-qa-db-ja.com

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で

<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
19
Thang Pham

ELではそのような列挙型にアクセスできません。ただし、JSFにはEL用の列挙型コンバーターが組み込まれています。列挙型名を文字列として使用できます。

<h:commandButton value="Test" action="#{myBean.Test('PROFILE_COMMENT')}" />
41
BalusC