禁用时禁用selectOne的验证

时间:2012-07-01 15:02:48

标签: java jsf richfaces selectonemenu

我想弄清楚以下问题。我有一个简单的富人:选择

<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,并且在userList中找不到具有此id的用户。 bean是视图范围。有没有办法以某种方式跳过验证或排除富人:从提交表单中选择?

1 个答案:

答案 0 :(得分:0)

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