0

私は次の問題を理解しようとしています。私は単純な金持ちを持っています:選択

<rich:select listWidth="310" id="userSelect" value="#{departmentBacking.selectedUserId}" 
disabled="#{departmentBacking.unassignCheckbox}"enableManualInput="true" defaultLabel="#{not departmentBacking.unassignCheckbox ? 'start typing a surname...' : 'Uncheck unassign departments first'}">

        <f:selectItems value="#{departmentBacking.userList}" var="user" itemValue="#{user.id}" itemLabel="#{user.surname} #{user.name} - #{user.email}" />

</rich:select>

後にいくつかの部門のリーダーとして設定される人を選択します。うまく機能します。ただし、新しい部門を選択せず​​に部門の割り当てを解除するだけでよい場合、問題が発生し始めます。unnassignCHeckboxが選択されている場合、この値はまったく使用しません。ただし、常に検証エラーが発生するため、jsfエンジンにポストバックを実行させることはできません。

MyForm:userSelect: Validation Error: Value is not valid

これは、#{user.id}のデフォルト値が0であり、このIDを持つユーザーがuserListに見つからないためだと思います。Beanはビュースコープです。どういうわけか検証をスキップするか、送信フォームからrich:selectを除外する方法はありますか?

4

1 に答える 1

0

<f:selectItem>0の値と「SELECT」ラベル(またはその他)を使用してを追加してみてください。これで問題が解決し、unnassignCHeckboxが選択されていない場合、selectedUserId値は0より大きくなければならないという検証が追加されます(これは、まだ実装されていない場合にのみ有効です)。

<rich:select listWidth="310" id="userSelect" value="#{departmentBacking.selectedUserId}" 
    disabled="#{departmentBacking.unassignCheckbox}"enableManualInput="true"
    defaultLabel="#{not departmentBacking.unassignCheckbox ? 'start typing a surname...' : 'Uncheck unassign departments first'}">

    <f:selectItem itemValue="0" itemLabel = "SELECT SURNAME" />
    <f:selectItems value="#{departmentBacking.userList}" var="user"
        itemValue="#{user.id}"
        itemLabel="#{user.surname} #{user.name} - #{user.email}" />

</rich:select>
于 2012-07-01T15:14:40.640 に答える