У меня есть форма в JSF2 с 2 флажками (<h:selectBooleanCheckbox>
). Необходимо проверить хотя бы один из них. Оба проверены также нормально, но когда ни один не установлен, должна быть ошибка.JSF2: Как проверить два зависимых флажка?
Эта проверка должна также работать на ajax, то есть когда пользователь проверяет/отменяет проверку, сообщение об ошибке должно исчезнуть/появиться.
Поэтому я привязал оба флажка к UISelectBoolean
элементам и добавил валидатор к каждому. В валидаторе я проверяю значение второго флажка, если оно ложно, а текущий флажок также установлен в значение false, создается ошибка errormessage. Smth нравится:
if (newValue == false && secondCheckbox.getValue() == false) {
throw new ValidationException();
}
Проблема заключается в том, когда пользователь неустановленными флажок на странице, в то время как другой также бесконтрольно, это ложное значение не идет к модели, ни событие UISelectBoolean.
Сценарий:
- Первоначально оба бесконтрольно
- проверки пользователя CheckBox1.
newValue
istrue
, так что это действительно, идет UISelectBoolean и модель.- Пользователь отключает checkbox1. Checkbox2 -
false
,newValue
-false
, поэтому исключение выбрасывается. Из-за неудачной проверки это значениеfalse
не переходит к модели или даже к элементу UISelectBoolean. - Пользователь проверяет флажок2. Значение
True
относится к модели и UISelectBoolean. - Пользователь отключает checkbox2. Checkbox1 по-прежнему не отмечен на странице, но в модели и UISelectBoolean есть еще
true
. Таким образом, проверка проходит, и сообщение об ошибке отсутствует. На странице обе флажки сняты, но в модели checkbox1 по-прежнемуtrue
.
Как решить такую проблему?
Любые причины, по которым вы не можете использовать ``? –
BalusC
2010-12-08 13:23:50
Да, не знал этого :) Спасибо! – amorfis 2010-12-08 15:14:37