1

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

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

爪哇代码

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> 
4

1 回答 1

3

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

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

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

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

于 2012-06-06T16:57:28.253 回答