JSF 1.2和JSF 2.1中的validateLength

时间:2012-09-12 14:15:48

标签: jsf-2 jsf-1.2

我最近从JSF 1.2升级到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" />

JSF 1.2中validateLength的行为是,如果我们在Product Code字段中输入值“1”,该值小于mininum允许的'2',我将得到错误消息“Value is less allowable minimum of '2'”。但是,如果我没有输入字段产品代码的任何值,那么我没有看到任何错误消息。

这种行为改变了JSF 2.1的一部分。如果我没有为字段产品代码提供任何值,那么我会收到错误消息“值小于允许的最小值'2'”。

这种行为真的改变了JSF 2.1的一部分吗?

非常感谢您对此的任何想法或帮助。

2 个答案:

答案 0 :(得分:0)

这实际上是JSF 1.2中的一个错误。不应该像那样验证空的非必需字段。

如果要验证要求,请使用required="true"

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

如果要控制所需的消息,请设置requiredMessage属性(自JSF2以来的新属性):

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

顺便说一下,您可以通过validatorMessage控制通用验证消息(也是JSF2以来的新消息)。

答案 1 :(得分:0)

您可以通过添加以下上下文参数来配置此行为:

<context-param>
    <param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name>
    <param-value>false</param-value>
</context-param>