我想弄清楚以下问题。我有一个简单的富人:选择
<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是视图范围。有没有办法以某种方式跳过验证或排除富人:从提交表单中选择?
答案 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>