#validation #jsf-2 #uirepeat
#проверка #jsf-2 #uirepeat
Вопрос:
У меня есть приложение JSF2, которое использует <ui:repeat />
для отображения нескольких текстовых полей, каждое из которых связано с элементом в коллекции. Мне нужно показывать сообщения об ошибках после ввода в одном <h:messages />
теге.
В то же время у меня есть некоторые другие обязательные поля вне <ui:repeat />
тега, рядом с вводимыми которыми должно быть сообщение об ошибке, поэтому у них будет соответствующий <h:message />
тег. Проблема здесь в том, что каждый раз, когда я запускаю проверку внешнего поля, его сообщение также появляется в <h:messages />
теге <ui:repeat />
.
Вот код:
<table cellpadding="0" cellspacing="0" width="100%">
<tr>
<td><h:outputLabel value="Items"/></td>
<td>
<ui:repeat var="i" value="#{itemsBean.itemsCount}" id="items">
<h:inputText id="itemTitle" value="#{itemsBean.items[i]}" required="true" />
<h:panelGroup layout="block" styleClass="clear" rendered="#{((i 1) % 10 == 0)}" />
</ui:repeat>
<h:messages id="itemsMessages" showDetail="false" showSummary="true" styleClass="error_list" />
</td>
<td><h:outputLabel value="Required Field" /></td>
<td>
<h:inputText id="requiredField" value="#{itemsBean.requiredField}" />
<h:message for="requiredField" showDetail="false" showSummary="true" styleClass="error_list" />
</td>
</tr>
</table>
Я знаю, что именно так работает проверка JSF, но мне нужно предотвратить появление сообщения внешнего ввода в сводке проверки повторяющихся элементов.
Заранее спасибо.
Комментарии:
1. Вы когда-нибудь исправляли эту проблему?
2. @edhedges, боюсь, что нет. Однако я использовал обходной путь, переместив сообщение за пределы <ui:repeat /> и установив сообщения на стороне сервера
Ответ №1:
Попробуйте <h:messages id="itemsMessages" showDetail="false" showSummary="true" styleClass="error_list" globalOnly="true"/>
Это приводит к тому, что компонент отображает сообщения только из компонентов сообщений, для которых не установлен атрибут for.
Комментарии:
1. Я попробовал это, но теперь сообщения для входных данных в
<ui:repeat />
не отображаются.