Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 显示多个包含超过h:message的字段的JSF验证错误_Validation_Jsf_Rendering - Fatal编程技术网

Validation 显示多个包含超过h:message的字段的JSF验证错误

Validation 显示多个包含超过h:message的字段的JSF验证错误,validation,jsf,rendering,Validation,Jsf,Rendering,在多个输入字段上进行验证的表单应显示时尚的错误消息,并在包含在红色框中的消息前面显示一个图标 只有在出现错误时,才能呈现包含图标和消息的h:panelGroup 只有一个经过验证的输入字段,这将起作用: <h:panelGroup rendered="#{facesContext.validationFailed}" 我的解决方案是现在为每个输入都有一个验证器,并为每个验证器添加一个属性´´validationFailed´´ <p:inputNumber id="mileage"

在多个输入字段上进行验证的表单应显示时尚的错误消息,并在包含在红色框中的消息前面显示一个图标

只有在出现错误时,才能呈现包含图标和消息的h:panelGroup

只有一个经过验证的输入字段,这将起作用:

<h:panelGroup rendered="#{facesContext.validationFailed}"

我的解决方案是现在为每个输入都有一个验证器,并为每个验证器添加一个属性´´validationFailed´´

<p:inputNumber id="mileage" validator="#{mileageValidator.validate}"></p:inputNumber>
<h:panelGroup rendered="#{mileageValidator.validationFailed}" styleClass="wizard-alert-box">
    <div class="wizard-alert-content-margin">
        <h:graphicImage name="attention.png"/>
        <h:message id="invalid-mileage" for="mileage" showSummary="true" showDetail="false"/>
    </div>
</h:panelGroup>

<p:calendar id="date" validator="#{dateValidator.validate}"></p:calendar>
<h:panelGroup rendered="#{dateValidator.validationFailed}" styleClass="wizard-alert-box">
    <div class="wizard-alert-content-margin">
        <h:graphicImage name="attention.png"/>
        <h:message id="invalid-date" for="date" showSummary="true" showDetail="false"/>
    </div>
</h:panelGroup>

在你的样品中,我只看到一个。如果有多个panelGroup,并且看起来都像
Yes,则有多个。那么,对于渲染属性,我可以使用什么表达式使它们的行为与所需的不同呢
@Named("mileageValidator")
public class MileageValidator {

    @Getter
    private boolean validationFailed;

    public void validate(FacesContext context, UIComponent component, Object value) {
        validationFailed = value == null;
        if (validationFailed) {
            throw new ValidatorException(new FacesMessage("mileage empty"));
        }
    }
}