Java Primefaces:转换错误设置值';管理员';对于';空转换器';
我在这段代码中遇到了错误,我被困在这一点上。请帮帮我 代码中包括selectedRole、allRolesList的getter和setter java代码Java Primefaces:转换错误设置值';管理员';对于';空转换器';,java,jsf,primefaces,Java,Jsf,Primefaces,我在这段代码中遇到了错误,我被困在这一点上。请帮帮我 代码中包括selectedRole、allRolesList的getter和setter java代码 私有字符串selectedRole; List allRolesList=new ArrayList(); 如果(!roleList.isEmpty()){ isRolesPresent=true; for(用户角色ur:roleList){ 添加(ur.getRoleName().toString()); /*打印所有角色列表结果:[管理
私有字符串selectedRole;
List allRolesList=new ArrayList();
如果(!roleList.isEmpty()){
isRolesPresent=true;
for(用户角色ur:roleList){
添加(ur.getRoleName().toString());
/*打印所有角色列表结果:[管理员]*/
系统输出打印(“所有角色列表”+所有角色列表);
}
}否则{
isRolesPresent=false;
}
基本面代码:
{usersDAO.selectedUser}
显然不是字符串类型。JSF不知道如何将字符串
转换为用户
,因为没有为用户
类型注册转换器,因此出现了错误消息
您通常需要为此创建一个自定义的转换器
,如中所述,但基于给定的Java代码,您实际上需要{usersDAO.selectedRole}
,它已经是字符串
类型。因此,您不需要创建自定义的转换器
顺便说一下,名称中带有“DAO”的托管bean非常奇怪。您确定没有在单个类中混合概念或紧密耦合不同的职责(这将导致较差的可重用性/可维护性)?DAO类通常不是JSF管理的bean。它通常是JSF托管bean的属性。DAO类通常是包含所有数据库交互代码的类,例如find()
,list()
,create()
,save()
,delete()
,等等。这绝对不能用作JSF管理的bean。
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>