2015-12-20 2 views
1

Я показываю небольшой значок рядом с полями ввода, когда проверка не прошла. Я могу это сделать, но я надеялся на лучшее решение, чем то, что я в настоящее время: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 впервые в диалоговом окне, в котором отображается форма. Таким образом, есть действительная обратная связь, которая отображается, которую я не хочу иметь.

+0

Вы можете попробовать <ч: panelGroup ID = "myfieldFeedback" вынесенный = "# {facesContext.currentPhaseId.ordinal эк 3)"> –

ответ

1

Таким образом, вы должны убедиться, что условия оцениваются только во время запроса обратной связи, а не во время первоначального запроса (GET). Вы можете проверить это на FacesContext#isPostback().

<h:panelGroup id="myfieldFeedback"> 
    <ui:fragment rendered="#{facesContext.postback}"> 
     <div class="...">v</div> 
     <div class="...">!</div> 
    </ui:fragment> 
</h:panelGroup> 
+0

Спасибо, даже если я не буду использовать, что, поскольку диалог моего динамична. Наверное, я просто поставлю счетчик в своей фасоли или что-то в этом роде. Хорошо бы знать, тем не менее. – Ced

+0

Если исходный запрос, в свою очередь, также является обратной записью (например, потому, что он находится внутри диалогового окна), тогда вы измените условие в атрибуте «rendered» соответственно, например. проверьте, какая форма и/или кнопка была отправлена ​​/ нажата. – BalusC

+0

Это звучит лучше, чем моя карта indd – Ced

Смежные вопросы