Я обнаружил, что валидатор jsf, привязанный к selectOneMenu, при отправке вызывается только тогда, когда selectOneMenu имеет required="true". Как я могу разрешить это, чтобы вызвать валидатор без этого атрибута?
При отправке jsf валидатор selectOneMenu запускается только в том случае, если установлено required=true. Почему?
Ответы (1)
Я обнаружил, что валидатор jsf, привязанный к selectOneMenu, при отправке вызывается только тогда, когда selectOneMenu имеет required="true".
Это действительно по спецификации. Кстати, это относится и ко всем другим элементам ввода.
Как я могу решить эту проблему, чтобы вызывать валидатор без этого атрибута?
Вы не можете. Просто укажите атрибут required="true"
, если вам требуется, чтобы конечный пользователь выбрал элемент. По умолчанию это необязательно, потому что могут быть обстоятельства, когда вам не требуется, чтобы конечный пользователь выбирал элемент.
person
BalusC
schedule
17.01.2012
Итак, как я могу выполнить требуемую проверку поля только в валидаторе, потому что в моем случае мне нужно сделать запрос к серверу с пустым значением selectMenu, но я не могу этого сделать, когда установлен атрибут required = true.
- person Daggeto; 17.01.2012
То есть допустимо пустое значение? Тогда я вообще не понимаю вашей проблемы/беспокойства. Каковы конкретные функциональные требования? Какую проверку вы хотели бы выполнить?
- person BalusC; 17.01.2012
Выпадающий список с пустым значением, при выборе пустого значения другой элемент должен быть скрыт. Поэтому я добавил a4j:support onchange, чтобы обновить значение раскрывающегося списка на заднем компоненте и повторно отобразить динамический элемент. Динамический элемент виден с помощью rendered=condition. Проблема заключается в том, что я устанавливаю dropDown в значение required и не обновляю значение bean-компонента для выбранного пустого значения.
- person Daggeto; 17.01.2012
Я не понимаю конкретной проблемы. Возможно, вы слишком усложнили подход к установке атрибута
rendered
. Вы можете просто установить его на rendered="#{not empty bean.selectedValue}"
и позволить a4j:support
повторно визуализировать этот компонент. В будущем постарайтесь спрашивать о реальной конкретной проблеме, а не задавать довольно риторический вопрос.
- person BalusC; 17.01.2012