jsf-2 - jsf inputText 和 validateRegexPatter

标签 jsf-2 message validation placeholder

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

    <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} 被替换为正则表达式模式。 同时,我要显示标签值。 我的解决方案不起作用,我该怎么办?

最佳答案

我想你正在使用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>

关于jsf-2 - jsf inputText 和 validateRegexPatter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4804253/

相关文章:

iOS : how to fill a field if user gets a text message from our service?

javascript - Discord.js 检查角色是否存在

javascript - 如何更改验证表单中的属性值

jsf - jsf中没有 session 生成

java - JF2动态表单元素不记得输入,每次添加元素时页面都会刷新

jsf-2 - 将静态 HTML(无效的 XHTML)文件包含到 JSF Facelets

ios - Xcode 模块导入错误

javascript - 需要一个正则表达式来验证长度为 6 到 25 个字符的字母数字

javascript null 验证和小数验证在一个函数中 - Asp .Net

jsf-2 - JSF,复合组件 : method call with default attribute value as parameter