JSF не отображает элемент span для h: message - PullRequest
1 голос
/ 10 декабря 2011

У меня есть элемент h: inputText и сообщение h: для него:

<h:form id="cancelForm">
    <h:inputText id="days" />
    <h:message for="days" />
</h:form>

Поэтому, когда я открываю страницу, JSF отображает элемент span для сообщения об ошибке.Хорошо.Когда я нажимаю «отправить», приложение отправляется в Java и проверяет поля:

// Some code
if (error) {
    FacesContext.getCurrentInstance().addMessage("days", new FacesMessage("Error message"));
    return error();
}

Но после этого JSF не отображает «span» для сообщения h :.

Почему?

1 Ответ

3 голосов
/ 10 декабря 2011

days это просто простой идентификатор для компонента inputText. Для звонка addMessage вам нужен полный идентификатор (идентификатор клиента).

Вы можете получить идентификатор клиента, посмотрев обработанный исходный код HTML или, если все родительские контейнеры имен в вашем Facelet имеют идентификаторы, угадайте его. Обычно все родительские идентификаторы объединяются с : в качестве разделителя.

Чтобы всегда получить 100% правильный идентификатор, привяжите inputComponent к вашему компоненту поддержки и в фрагменте кода, который вы показываете выше, запросите его идентификатор.

Наконец, один совет: как правило, тип проверки ошибок и добавления сообщений лиц выполняется через Валидатор и / или Конвертер. Делать это в бэк-бине не должно быть вашим первым подходом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...