Что значитделать в JSF? - PullRequest
       13

Что значитделать в JSF?

6 голосов
/ 22 марта 2010

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

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

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

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

Ответы [ 2 ]

17 голосов
/ 22 марта 2010

Тег 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 .

5 голосов
/ 22 марта 2010

Компоненты <h:message> и <h:messages> предназначены для отображения сообщений пользователям (обычно это сообщение об ошибке).

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

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

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

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

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

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

...