Я показываю небольшой значок рядом с полями ввода, когда проверка не прошла. Я могу это сделать, но я надеялся на лучшее решение, чем то, что я в настоящее время:jsf component.valid первый раз, вводя на страницу
<p:inputText ... binding="#{myfield}">
<f:validator binding="#{myfieldValidator}"/>
<f:ajax event="blur" render="myfieldFeedback"/>
</p:inputText>
<h:panelGroup id="myfieldFeedback">
<div class="failedIndicator colorRed" jsf:rendered="#{myFieldvalidator.isIndicatorvisible.myFieldfailed}">!</div>
<div class="successIndicator" jsf:rendered="#{myFieldValidator.isIndicatorVisible.myFieldSuccess}">v</div>
</h:panelGroup>
С внутри моего валидатора:
private Map<String, Boolean> isIndicatorVisible;
isIndicatorVisible.put("myFieldSuccess", false);//if validation succeeds goes to true
isIndicatorVisible.put("myFieldFailed", false);// opposite of above
Я надеюсь, что для лучшего решения (что не использовать карту), как это:
<h:panelGroup id="myfieldFeedback">
<div class="#{myfield.valid ? 'successIndicator' : 'noDisplay'}">v</div>
<div class="#{myfield.valid ? 'noDisplay' : 'failedIndicator colorRed'}">!</div>
</h:panelGroup>
поле действует на entenring впервые в диалоговом окне, в котором отображается форма. Таким образом, есть действительная обратная связь, которая отображается, которую я не хочу иметь.
Вы можете попробовать <ч: panelGroup ID = "myfieldFeedback" вынесенный = "# {facesContext.currentPhaseId.ordinal эк 3)"> –