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>

它选择一个人,后来被设置为某些部门的领导。效果很好。但是,如果我只需要取消分配部门而不选择新部门,就会开始出现问题。如果选择了 unnassignCeckbox,我根本不想使用这个值。但是,我无法让 jsf 引擎进行回发,因为我总是收到验证错误。

MyForm:userSelect: Validation Error: Value is not valid

我认为这是因为 #{user.id} 的默认值为 0,并且在 userList 中找不到具有此 id 的用户。bean 是视图范围的。有没有办法以某种方式跳过验证或排除富人:从提交表单中选择?

4

1 回答 1

0

尝试添加<f:selectItem>0 值和“SELECT”标签(或其他)。这将解决您的问题,并添加一个验证,即当取消选择 unnassignCeckbox 时, 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 回答