【问题标题】:JSF custom validator not invoked when submitted input value is null提交的输入值为空时未调用 JSF 自定义验证器
【发布时间】:2014-05-22 16:59:22
【问题描述】:

我创建了一个自定义验证器,当输入为空时它不会被调用。

我的验证码:

@FacesValidator("requiredValidator")
public class RequredValidation implements Validator {

    public void validate(FacesContext context, UIComponent component,
            Object value) throws ValidatorException {
        System.out.println("in valid GGGGGGGG");

    }

我的xhtml页面代码:

<p:message for="urlInput"  />

<p:inputText id="urlInputv" value="#{coverageBean.firstname}" label="URL" maxlength="2" >
    <f:validator validatorId="requiredValidator"></f:validator>
</p:inputText>
<p:message for="urlInputv"  />
<p:commandButton value="submit" action="#{loginBean.validateText}" />

现在,当我在文本框中输入任何值时,它可以工作,但是当 inputtext 为空时,它就不起作用了。

服务器正在使用

  • 雄猫
  • primefaces 3.5
  • jsf2.0

谁能告诉我问题是什么?

【问题讨论】:

  • &lt;p:message for="urlInput" /&gt; 与问题相关还是只是在增加噪音?
  • 它只是添加噪音。我只想在 inputtext 为空时调用我的验证器
  • 好吧,在这种情况下,编辑问题并将其删除。

标签: validation jsf jsf-2


【解决方案1】:

默认情况下,如果 Bean Validation (JSR303) 在环境中不可用,JSF 不会验证空的提交值。可以使用上下文参数javax.faces.VALIDATE_EMPTY_FIELDS 控制此行为。

javax.faces.VALIDATE_EMPTY_FIELDS 的默认值为auto,这意味着如果类路径中提供了 Bean Validation (JSR303),则会验证空字段。

如果您想在没有 Bean Validation 的情况下验证空字段,则将 web.xml 中的上下文参数显式设置为 true,如下所示:

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

必须说您通常使用required="true",以防您想根据需要验证输入字段。然后,您无需在自定义验证器中执行该工作。

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

或者,使用&lt;f:validateRequired&gt; 更抽象:

<p:inputText ... requiredMessage="Please enter value">
    <f:validateRequired />
</p:inputText>

请注意,您可以在同一个输入组件上安全地使用多个验证器。

【讨论】:

    【解决方案2】:

    你有没有试过把:

    <p:inputText id="urlInputv" required="true"
    
    ....
    

    required true 用于避免用户使用 null 值。 如果您不想有必需的输入,请初始化您的值:

    firstname = ""; //or a default value
    

    【讨论】:

      猜你喜欢
      • 2015-01-02
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 2011-09-04
      相关资源
      最近更新 更多