2015-04-06 10 views
0

У меня есть текст ввода, который не вызывает настраиваемый валидатор, когда он имеет два уровня вложенных объектов в значении.Пользовательский валидатор не вызывается пустым значением ввода, ссылающимся на двухуровневое вложенное свойство

<p:inputText id="valueField" value="#{bean.obj1.obj2.value}" maxlength="50"> 
    <f:validator validatorId="requiredValidator" /> 
    <p:ajax event="blur" /> 
</p:inputText> 
<p:message id="idMsg" for="valueField"/> 

Он отлично работает, когда я даю какую-то ценность, но всякий раз, когда я пытаюсь с пустым значением, оно не вызывает валидатор.

И если изменить значение на #{bean.value}, то оно также будет работать.

+0

Привет, Вы создали пользовательский валидатор «requiredValidator»? Вы используете пользовательский валидатор с именем «requiredValidator», добавьте к нему необязательный код проверки –

+0

, вам не нужно добавлять настраиваемый валидатор для «обязательной» проверки, поскольку он уже предоставлен JSF, вы можете использовать его as:

+0

Привет @AliSaleh, я делаю иметь пользовательский валидатор. Здесь, основываясь на некоторых требованиях к бизнесу, я должен показать два или более сообщений для необходимой проверки. Как и для значения «Требуется» для пробелов «Только пробелы не допускаются». Что-то вроде того. – PrtkJn

ответ

1

JSF по умолчанию не путает пустые поля; вам нужно указать это поведение по конфигурации. Если предположить, что нет ошибки в валидатор, добавьте следующие конфигурационные параметры для вашего web.xml

<context-param> 
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name> 
    <param-value>true</param-value> 
</context-param> 

В противном случае, вы должны просто установить required="true" на входе или <f:validateRequired/> метки на входном компоненте, и сохранить себя все что набрав

+0

Можете ли вы объяснить *« И если изменить значение на # {bean.value}, то и оно будет работать. "*? – BalusC

+0

Не из информации, размещенной, нет @BalusC. Ты можешь? – kolossus