我最近从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的一部分吗?
非常感谢您对此的任何想法或帮助。
答案 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>