Что <h:messages> делает в JSF?

Я изучаю JSF и столкнулся с этой строкой:

<h:messages layout="table"></h:messages>

в примере приложения?

Не уверено, что делает эта строка? Я не получаю ошибки при удалении строки из кода и могу выполнить его и получить тот же вывод?

6
задан Romain Linsolas 22 March 2010 в 10:45
поделиться

2 ответа

Тег h: messages отображает все сообщения для текущего представления JSF, которые не охвачены тегом h: message (обратите внимание на отсутствующую букву «s» в конце). Сообщения могут быть сгенерированы явно вашими компонентами поддержки ( FacesContext.addMessage ) или неявно JSF.

Например. Если вы отметили входное значение как обязательное, и пользователь отправляет форму, не заполнив требуемое значение, в представление будет добавлено сообщение об ошибке. Если тег h: message привязан к соответствующему компоненту, сообщение будет отображаться там, в противном случае оно будет отображаться глобальным тегом h: messages в вашем представлении (если есть ).

Атрибут layout указывает, как должен выглядеть создаваемый HTML-код. Макет table (используемый в вашем примере) использует таблицу HTML для отображения сообщений, а макет list использует маркированный список (тег HTML ul ).

Если вы укажете , а не , укажите тег h: messages в вашем представлении, а также не укажете теги h: message , пользователь не будет уведомлен об ошибках. . Поэтому рекомендуется включать тег h: message для каждого компонента ввода вашего представления и тег h: messages для всего представления, чтобы гарантировать, что все сообщения видны Пользователь.

Краткую справку по тегам JSF можно найти в JSF Toolbox .

17
ответ дан 8 December 2019 в 05:54
поделиться

Компоненты и предназначены для отображения сообщений пользователям (обычно сообщения об ошибках).

Например, если у вас есть проверка на поле, которое не удалось (например, пользователь не заполнил обязательное поле или ввел строку в поле, состоящее только из чисел), то появляется FacesMessage добавляется к объекту FacesContext . Затем и затем используются для отображения сообщения на странице.

Компонент будет отображать все сообщения, содержащиеся в FacesContext , а посвящен конкретному clientId (конкретное поле). Последнее полезно, когда вы хотите разместить сообщение, например, рядом с полем.

Обратите внимание, что вы можете добавить любое сообщение, которое будет отображаться для пользователя:

FacesContext.getInstance().addMessage(null, new FacesMessage("The message to display"));

В этом примере первым параметром является поле ID поля, которое связано с этим сообщением (полезно, когда сообщение является проверочным сообщение для определенного поля). null означает, что сообщение является общей информацией (т. Е. Не связано с каким-либо конкретным полем).

Вы можете увидеть пример этого компонента здесь . Обратите внимание, что в этом примере используется rich: messages , который является расширением (предоставляемым RichFaces) «базового» , но принцип тот же.

5
ответ дан 8 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: