我在这段代码中遇到错误,我在这一点上陷入困境。请帮我。
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>
答案 0 :(得分:3)
#{usersDAO.selectedUser}
显然不属于String
类型。 JSF不知道如何将String
转换为User
,因为没有为User
类型注册转换器,因此出现了错误消息。
您通常需要为此创建自定义Converter
,如this answer中所述,但根据给定的Java代码,实际需要{{1而是已经是#{usersDAO.selectedRole}
类型的。因此,您无需创建自定义String
。
Converter
顺便说一下,名字中带有“DAO”的托管bean很奇怪。你确定你没有在一个类中混合概念或紧密耦合不同的职责(这会导致可重用性/可维护性差)吗?