Validation 如何显示单个CustomValidator的多个错误消息

Validation 如何显示单个CustomValidator的多个错误消息,validation,jsf,messages,Validation,Jsf,Messages,我创建了名为BoundaryCheckValidator的CustomValidator。我们需要为单个输入组件显示多个错误消息 <h:inputText id="Object__Risk__Group__ContributionAmount" required="true" requiredMessage="#{validations['Common.ContributionAmountRequiredMessage']}" validatorMessage="#{validatio

我创建了名为BoundaryCheckValidator的CustomValidator。我们需要为单个输入组件显示多个错误消息

<h:inputText id="Object__Risk__Group__ContributionAmount"  required="true" requiredMessage="#{validations['Common.ContributionAmountRequiredMessage']}" 
validatorMessage="#{validations['Common.ContributionAmountValidationMessage']}" value="#{automobileRatingManagedBean.attributeValueMap['Object__Risk__Group__ContributionAmount']}" >
 <p:ajax event="blur" listener="#{automobileRatingManagedBean1.save}"  update="UpdatedRiskGroupContributionAmount" />                                                           
 <f:validator validatorId="BoundaryCheckValidator"/>
 <f:attribute name="regexPattern" value="#{dictionary['CommonPattern.USCurrencyWithZero']}"/>
 <f:attribute name="minimumValue" value="#{automobileRatingManagedBean2.saveRequestMap.get('CurrencyMinValue')}"/>
 <f:attribute name="maximumValue" value="#{automobileRatingManagedBean2.saveRequestMap.get('CurrencyMaxValue')}"/>
 <f:attribute name="Type" value="Currency"/></h:inputText>                  
 <h:message for="Object__Risk__Group__ContributionAmount" errorClass="required_error_message" infoClass="validation_error_message" style="color:red" />

        Object maximumVal = component.getAttributes().get("maximumValue");
        if((maximumVal != null) && (!maximumVal.equals("")) && (value != "")){
            maximumValue=component.getAttributes().get("maximumValue").toString();
            maxValue = Double.parseDouble(maximumValue);
            if ( userValue > maxValue) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,errorMessage,"");   
                throw new ValidatorException(message);  
            }
        }

对象maximumVal=component.getAttributes().get(“maximumValue”);
如果((maximumVal!=null)&&(!maximumVal.equals(“”)&&(value!=“”){
maximumValue=component.getAttributes().get(“maximumValue”).toString();
maxValue=Double.parseDouble(maximumValue);
如果(用户值>最大值){
FacesMessage=新的FacesMessage(FacesMessage.SEVERITY_ERROR,errorMessage,“”);
抛出新的验证器异常(消息);
}
}
因此可能只抛出一条错误消息我们不允许使用绑定属性、任何支持UI组件,

我们怎么做???

自从JSF2.0以来,这个类有一个

ValidatorException
公共验证程序异常(收集消息)

允许此异常包含多条消息

好好利用它

List<FacesMessage> messages = new ArrayList<>();
messages.add(new FacesMessage(...));
messages.add(new FacesMessage(...));
...
throw new ValidatorException(messages);
List messages=new ArrayList();
添加(新面孔消息(…);
添加(新面孔消息(…);
...
抛出新的验证器异常(消息);
不要忘记用
替换有问题的
,否则只会显示第一个:

<h:messages for="Object__Risk__Group__ContributionAmount" ... />

请注意,您仍然可以让它通过
for
以特定组件为目标