Primefaces:'null Converter'的转换错误设置值'Admin'

时间:2012-06-06 16:52:31

标签: java jsf primefaces

我在这段代码中遇到错误,我在这一点上陷入困​​境。请帮我。

selectRole的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> 

1 个答案:

答案 0 :(得分:3)

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

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

Converter

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