在jsf中验证输入文本的长度和正则表达式时如何抛出不同的消息?

SRy*_*SRy 1 java validation xhtml jsf-2

我的xhtml页面中有一些这样的代码

 <h:inputText    id="cardNumber"  
                 value="#{bean.cardNumber}" required="true" 
                 requiredMessage="Card Number Cannot be Blank" 
                 validatorMessage="Card Number must be 16 digits" 
                 maxlength="16" size="16" >   
        <f:validateLength  maximum="16" minimum="16" />   
        <f:validateRegex pattern="[0-9]*" for="cardNumber"/>
  </h:inputText>
Run Code Online (Sandbox Code Playgroud)

对于上面的输入文本,我正在进行所有三种验证,即必需的字段验证,长度验证,正则表达式验证.

据我所知,被我定义validatorMessage</h:inputText>验证<f:validateLength/><f:validateRegex/>,它抛出同样的message.How我可以抛出两个不同的消息 <f:validateLength/><f:validateRegex/>

Dan*_*iel 5

您需要修改该Messages.properties文件

添加以下条目并进行修改......

javax.faces.validator.LengthValidator.MAXIMUM = {1}: Validation Error: Length is greater than allowable maximum of ''{0}''
javax.faces.validator.LengthValidator.MINIMUM = {1}: Validation Error: Length is less than allowable minimum of ''{0}''
Run Code Online (Sandbox Code Playgroud)

javax.faces.validator.RegexValidator.NOT_MATCHED = {1}: Validation Error: Value not according to pattern ''{0}''
javax.faces.validator.RegexValidator.PATTERN_NOT_SET = A pattern must be set for validate.
javax.faces.validator.RegexValidator.MATCH_EXCEPTION = The pattern is not a valid regular expression.
Run Code Online (Sandbox Code Playgroud)

有关完整的教程,请看一下:在JSF 2.0中自定义验证错误消息

这里是对JSF 2.0.x中可以覆盖的所有可用消息的完整引用