我在此代码中出现错误,我被困在这一点上。请帮我。

代码中包括了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>

最佳答案

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

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

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




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

09-30 18:06
查看更多