【问题标题】:jsf inputText and validateRegexPatterjsf inputText 和 validateRegexPatter
【发布时间】:2011-06-15 19:28:18
【问题描述】:

我想在消息中显示标签属性:

    <h:inputText id="email" label="#{sW.email}" value="#{contattiBean.contatto.email}"
                                 required="true">
              <f:param value="#{sW.email}" />
              <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]"/>
    </h:inputText>

我已经设置了 f:param 因为在

`javax.faces.validator.RegexValidator.NOT_MATCHED={0}: Valore non valido`

{0} 替换为正则表达式模式。 同时,我要显示标签值的内容。 我的解决方案不起作用,我该怎么办?

【问题讨论】:

    标签: jsf-2 message validation placeholder


    【解决方案1】:

    我想你正在使用 Mojarra,因为检查 javax.faces.validator.RegexValidator 的来源我注意到验证消息的参数只是模式,标签永远不会传递给消息格式化程序,你不能使用它在您自己的自定义消息中。

    //From javax.faces.validator.RegexValidator source
    if (!matcher.matches()) {
       Object[] params = { regex }; 
       fmsg = MessageFactory.getMessage(locale, NOT_MATCHED_MESSAGE_ID, params);
       throw new ValidatorException(fmsg);
    }
    

    在 MyFaces 来源中,它们似乎确实通过了模式和标签。

    至少有两个简单的选项:使用 MyFaces 或更好地使用输入组件的 validatorMessage 属性。

    validatorMessage 描述是启用 ValueExpression 的属性,如果存在,将用作验证器消息的文本,替换来自验证器的任何消息

     <h:inputText id="email" label="#{sW.email}" 
             value="#{contattiBean.contatto.email}"
             required="true" validatorMessage="#{sW.email} is not valid">
              <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]"/>
     </h:inputText>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-08
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 2012-05-20
      • 2013-02-23
      • 1970-01-01
      相关资源
      最近更新 更多