【问题标题】:Primefaces: Conversion Error setting value 'Admin' for 'null Converter'Primefaces:“空转换器”的转换错误设置值“管理员”
【发布时间】:2012-06-06 16:52:30
【问题描述】:

我在这段代码中遇到错误,我被困在这一点上。请帮我。

selectedRole 的 getter 和 setter,allRolesList 都包含在代码中

java代码

private String selectedRole;


List<String> allRolesList = new ArrayList<String>();

    if(!roleList.isEmpty()){
        isRolesPresent = true;
        for(UserRole ur : roleList){
            allRolesList.add(ur.getRoleName().toString());

/* printing allRolesList results: [admin] */

System.out.print("allRolesList "+allRolesList);

        }
    }else{
        isRolesPresent = false;
    }

素面代码:

        <p:selectOneMenu id="role" value="#{usersDAO.selectedUser}" effect="fade" required="true" 
                     requiredMessage="Role cannot be null">  
            <f:selectItems value="#{usersDAO.allRolesList}" />
        </p:selectOneMenu> 

【问题讨论】:

    标签: java jsf primefaces


    【解决方案1】:

    #{usersDAO.selectedUser} 显然不是String 类型。 JSF 不知道如何将String 转换为User,因为没有为User 类型注册转换器,因此您收到了错误消息。

    您通常需要为此创建一个自定义 Converter,如 this answer 中所述,但根据给定的 Java 代码,您实际上需要 #{usersDAO.selectedRole} 而不是已经存在的String 类型。所以你不需要创建自定义Converter。

    <p:selectOneMenu ... value="#{usersDAO.selectedRole}">
    

    顺便说一句,名称中带有“DAO”的托管 bean 很奇怪。您确定您没有在一个类中混合概念或将不同的职责紧密耦合(这会导致较差的可重用性/可维护性)?

    【讨论】:

    • DAO 类通常不是 JSF 托管 bean。它通常是 JSF 托管 bean 的属性。 DAO 类通常是一个包含所有数据库交互代码的类,例如find()、list()、create()、save()、delete() 等。绝对不能用作 JSF 托管 bean .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2011-09-23
    • 2014-03-30
    相关资源
    最近更新 更多