1

このコードでエラーが発生しました。この時点でスタックしています。私を助けてください。

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

1 に答える 1

3

#{usersDAO.selectedUser}明らかにタイプではありませんString。タイプにコンバーターが登録されてStringいないため、JSFは変換方法を認識していません。そのため、エラーメッセージが表示されます。UserUser

この回答Converterで説明されているように、通常はこのためのカスタムを作成する必要がありますが、指定されたJavaコードに基づいて、実際には、すでに型になっているカスタムが必要です。したがって、カスタムを作成する必要はありません。#{usersDAO.selectedRole}StringConverter

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

ちなみに、名前に「DAO」が入っているマネージドビーンはなかなかおかしいです。単一のクラスで概念を混合したり、異なる責任を緊密に結合したりしていないことを確認しますか(再利用性/保守性の低下につながります)?

于 2012-06-06T16:57:28.253 に答える