2010-03-22 25 views
6

estoy aprendiendo JSF y me encontré con esta línea:¿Qué hace <h:messages> en JSF?

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

en una aplicación de ejemplo?

No estoy seguro de qué hace esta línea? No obtengo ningún error al eliminar la línea del código, y puedo ejecutarlo y obtener el mismo resultado.

+0

La línea que encontré en el código de ejemplo: bibek

+0

He editado su pregunta. Use el atajo Ctrl + K para escribir el código en una pregunta/respuesta. – romaintaz

+0

@romaintaz gracias – bibek

Respuesta

17

La etiqueta h:messages representa todos los mensajes para la vista JSF actual que no están cubiertos por una etiqueta h:message (observe la "falta" al final). Los mensajes pueden ser generados explícitamente por sus beans de respaldo (FacesContext.addMessage) o implícitamente por JSF.

E.g. si ha marcado un valor de entrada según sea necesario y el usuario envía el formulario sin completar el valor requerido, se agregará un mensaje de error a la vista. Si una etiqueta h:message está vinculada al componente relevante, el mensaje se representará allí, de lo contrario será interpretada por la etiqueta global h:messages en su vista (si existe).

El atributo layout especifica cómo debe verse el código HTML generado. El diseño table (utilizado en su ejemplo) utiliza una tabla HTML para mostrar mensajes, mientras que el diseño list utiliza una lista con viñetas (etiqueta HTML ul).

Si lo hace, no especificar una etiqueta h:messages en su opinión, y también hay h:message etiquetas, el usuario no será informado acerca de los errores. Por lo tanto, es una buena práctica incluir una etiqueta h:message para cada componente de entrada de su vista y una etiqueta h:messages para toda su vista para asegurarse de que todos los mensajes sean visibles para el usuario.

Encontrará una referencia de etiqueta JSF compacta en JSF Toolbox.

+4

En relación con "representa todos los mensajes para la vista JSF actual que no están cubiertos". No creo que sea completamente correcto. Mostrará todos los mensajes excepto cuando especifique globalOnly = "true". –

5

Los componentes <h:message> y <h:messages> están dedicados a mostrar mensajes a los usuarios (generalmente mensaje de error).

Por ejemplo, cuando tiene una validación en un campo que falló (por ejemplo, el usuario no llenó un campo requerido, o ingresó una cadena en un campo de solo número), se agrega FacesMessage al FacesContext objeto. El <h:message> y el <h:messages> se usan para mostrar el mensaje en la página.

El componente <h:messages> mostrará todos los mensajes contenidos en el FacesContext, mientras que el <h:message> está dedicado a un ID de cliente específico (un campo específico). Esto último es útil cuando quiere colocar el mensaje cerca de un campo, por ejemplo.

Tenga en cuenta que usted puede agregar cualquier tipo de mensaje que se muestra al usuario:

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

En este ejemplo, el primer parámetro es el campo ID del campo que está preocupado por este mensaje (útil cuando el mensaje es un mensaje de validación para un campo específico). null significa que el mensaje es una información general (es decir, no está vinculada a ningún campo en particular).

Puede ver un ejemplo de este componente here. Tenga en cuenta que este ejemplo utiliza el rich:messages que es una extensión (proporcionada por RichFaces) del <h:message/> "básico", pero el principio es el mismo.