Я изучаю JSF и столкнулся с этой строкой:
<h:messages layout="table"></h:messages>
в примере приложения?
Не уверено, что делает эта строка? Я не получаю ошибки при удалении строки из кода и могу выполнить его и получить тот же вывод?
Тег 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 .
Компоненты
и
предназначены для отображения сообщений пользователям (обычно сообщения об ошибках).
Например, если у вас есть проверка на поле, которое не удалось (например, пользователь не заполнил обязательное поле или ввел строку в поле, состоящее только из чисел), то появляется FacesMessage
добавляется к объекту FacesContext
. Затем
и
затем используются для отображения сообщения на странице.
Компонент
будет отображать все сообщения, содержащиеся в FacesContext
, а
посвящен конкретному clientId (конкретное поле). Последнее полезно, когда вы хотите разместить сообщение, например, рядом с полем.
Обратите внимание, что вы можете добавить любое сообщение, которое будет отображаться для пользователя:
FacesContext.getInstance().addMessage(null, new FacesMessage("The message to display"));
В этом примере первым параметром является поле ID поля, которое связано с этим сообщением (полезно, когда сообщение является проверочным сообщение для определенного поля). null
означает, что сообщение является общей информацией (т. Е. Не связано с каким-либо конкретным полем).
Вы можете увидеть пример этого компонента здесь . Обратите внимание, что в этом примере используется rich: messages
, который является расширением (предоставляемым RichFaces) «базового»
, но принцип тот же.