繁体   English   中英

将Enum值作为参数从JSF传递

[英]Passing a Enum value as a parameter from 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不是一个类

我之所以Type在我的EJB,这样我可以创建一个枚举类型为我的实体,所以我的查询是这样的

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

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

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

在我而言帮助了我。

简单比较枚举值。 EL识别它并在验证xhtml时检查该值是否存在。

<c:if test="#{requestManager.selectedRequestType == 'ItemCreate' or requestManager.selectedRequestType == 'ItemChange'}"></c:if>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM