Сообщения JSF для повторного ввода пользовательского интерфейса

У меня есть приложение 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, но мне нужно предотвратить появление сообщения внешнего ввода в сводке проверки повторяющихся элементов. Заранее спасибо.


person Ivaylo Slavov    schedule 14.11.2011    source источник
comment
Вы когда-нибудь решали эту проблему?   -  person edhedges    schedule 10.01.2013
comment
@edhedges, боюсь, что нет. Однако я использовал обходной путь, переместив сообщение за пределы ‹ui:repeat /› и установив сообщения на стороне сервера.   -  person Ivaylo Slavov    schedule 10.01.2013


Ответы (1)


Попробуйте <h:messages id="itemsMessages" showDetail="false" showSummary="true" styleClass="error_list" globalOnly="true"/>

Это приводит к тому, что компонент отображает сообщения только от компонентов сообщений без установленного атрибута for.

person Rasmus Franke    schedule 14.11.2011
comment
Пробовал, но теперь сообщения для входов в <ui:repeat /> не появляются. - person Ivaylo Slavov; 14.11.2011