0

我最近从 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”,该值小于允许的最小值 '2',我将收到错误消息“Value is less than allowed minimum of '2' ”。但是,如果我没有为字段产品代码输入任何值,那么我不会看到任何错误消息。

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

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

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

4

2 回答 2

0

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

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

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

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

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

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

于 2012-09-12T15:31:02.470 回答
0

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

<context-param>
    <param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name>
    <param-value>false</param-value>
</context-param>
于 2014-10-20T22:05:43.510 回答