2012-09-12 2 views
0

Я недавно обновил JSF 1.2 до JSF 2.1. Вот мой код:validateLength в JSF 1.2 Vs JSF 2.1

Product Code: <h:inputText id="productCode" value="#{dataItem.productCode}" maxlength="25" disabled="#{dataItem.disabled}"> 
         <f:validateLength minimum="2" maximum="25" /> 
        </h:inputText> 
        <h:message for="productCode" errorClass="error" showSummary="false" /> 

Поведение validateLength в JSF 1.2 был, если ввести значение «1» в поле Код продукта, который меньше, чем Mininum допустимый «2», я получаю сообщение об ошибке сообщение «Значение меньше допустимого минимума« 2 ». Но если я не буду вводить какое-либо значение для поля Код продукта, я не вижу сообщения об ошибке.

Это поведение изменило часть JSF 2.1. Если я не даю никакого значения для поля Код продукта, я получаю сообщение об ошибке «Значение меньше допустимого минимума« 2 ».

Было ли поведение действительно изменено частью JSF 2.1?

Любые мысли или помощь по этому поводу очень ценятся.

ответ

0

Это было ошибкой в ​​JSF 1.2. Пустое поле необязательно не должно быть подтверждено таким образом.

Если вы хотите проверить требуемое количество, используйте required="true".

<h:inputText ... required="true"> 

Если вы хотите контролировать требуемое сообщение, установите атрибут requiredMessage (новый начиная с JSF2):

<h:inputText ... required="true" requiredMessage="Please enter value"> 

Вы можете кстати контролировать общее сообщение проверки по validatorMessage, а также (и новому так как JSF2).

+0

Я вижу такое же поведение. Наверное, я в замешательстве. Какая часть ошибки? У меня нет обязательного атрибута, но пустые значения по-прежнему устраняют минимальную ошибку проверки. Это не то, что я хочу, я только хочу, чтобы это срабатывало **, если ** есть значение или если это требуется. Я задал вопрос [здесь] (http://stackoverflow.com/questions/12678784/jsf-2-1-x-validation-behaves-differently-on-glassfish-3-1-2-vs-tomcat-6 -7). – Mickelback

+0

Ошибка в том, что '' также запускается в пустое необязательное поле. – BalusC

+0

, чтобы быть ясным, является ли ошибка в 1.2 или 2.1? Я использую Glassfish 3.1, используя Jsf 2.1.12, и я получаю поведение, которое поле ** не требуется **, но я все равно получаю validteLength для запуска. Кроме того, просто чтобы добавить, мы уже некоторое время используем 2.1 на Tomcat без проблем ... только начали видеть это поведение, когда мы начали использовать Glassfish ... любые мысли? – Mickelback

0

Вы можете настроить это поведение, добавив следующий контекст параметров:

<context-param> 
    <param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name> 
    <param-value>false</param-value> 
</context-param> 
Смежные вопросы