【问题标题】:validateLength in JSF 1.2 Vs JSF 2.1JSF 1.2 与 JSF 2.1 中的 validateLength
【发布时间】:2012-09-12 14:15:47
【问题描述】:

我最近从 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 的一部分吗?

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

【问题讨论】:

    标签: jsf-2 jsf-1.2


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 我看到了同样的行为。我想我很困惑。哪个部分是错误?我没有必需的属性,但空值仍然会引发最小验证错误。这不是我想要的,我只想触发 if 有一个值或者是否需要它。我有一个问题已发布here
    • 错误是&lt;f:validateMinimum&gt; 也会在一个空的非必填字段上触发。
    • 要明确,是 1.2 还是 2.1 中的错误?我正在使用 Jsf 2.1.12 的 Glassfish 3.1 并且我得到了该字段 not 必需的行为,但我仍然让 validteLength 触发。另外,补充一点,我们在 Tomcat 上使用 2.1 已经有一段时间了,没有任何问题……当我们开始使用 Glassfish 时才开始看到这种行为……有什么想法吗?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 2013-04-15
      • 2013-01-27
      • 2015-10-17
      相关资源
      最近更新 更多