2010-03-22 4 views
6

Sto imparando JSF e sono imbattuto in questa linea:Cosa fa <h:messages> in JSF?

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

in un'applicazione di esempio?

non sono sicuro che cosa fa questo effetto? Non ricevo errori durante la rimozione della linea dal codice e sono in grado di eseguirlo e ottenere lo stesso risultato?

+0

La riga che ho trovato nel codice di esempio: bibek

+0

Ho modificato la tua domanda. Usa la scorciatoia Ctrl + K per scrivere il codice in una domanda/risposta. – romaintaz

+0

@romaintaz grazie – bibek

risposta

17

Il tag h:messages esegue il rendering di tutti i messaggi per la vista JSF corrente che non sono coperti da un tag h:message (annota il tag mancante alla fine). I messaggi possono essere generati esplicitamente dai vostri backing bean (FacesContext.addMessage) o implicitamente da JSF.

E.g. se è stato contrassegnato un valore di input come richiesto e l'utente invia il modulo senza inserire il valore richiesto, verrà aggiunto un messaggio di errore alla vista. Se un tag h:message è legato a componenti di importanza, il messaggio sarà reso lì, altrimenti sarà reso dal h:messages variabile globale nella vista (se presente).

L'attributo layout specifica ciò che il codice HTML da generare dovrebbe essere simile. Il layout table (utilizzato nel tuo esempio) utilizza una tabella HTML per visualizzare i messaggi, mentre il layout list utilizza un elenco puntato (HTML ul tag).

Se fate non specificare un tag h:messages nella vista e anche non h:message tag, l'utente non sarà informato sugli errori. Pertanto, è buona norma includere un tag h:message per ogni componente di ingresso della vostra vista e una tag h:messages per tutta l'immagine per assicurarsi che tutti i messaggi sono visibili per l'utente.

Troverete un riferimento di tag JSF compatto a JSF Toolbox.

+4

Per quanto riguarda "visualizza tutti i messaggi per la vista JSF corrente che non sono coperti". Non penso che sia completamente corretto. Mostrerà tutti i messaggi tranne quando specifichi globalOnly = "true". –

5

I componenti <h:message> e <h:messages> sono dedicati alla visualizzazione di messaggi per gli utenti (in genere messaggi di errore).

Ad esempio, quando si dispone di una convalida su un campo che non è riuscita (ad esempio, l'utente non ha riempire un campo obbligatorio, o inputed una stringa in un campo numerico-only), poi un FacesMessage viene aggiunto al FacesContext oggetto. I numeri <h:message> e <h:messages> vengono quindi utilizzati per visualizzare il messaggio nella pagina.

Il componente <h:messages> visualizza tutti i messaggi contenuti nello FacesContext, mentre lo <h:message> è dedicato a un clientId specifico (un campo specifico). Quest'ultimo è utile quando si desidera posizionare il messaggio vicino a un campo, ad esempio.

Si noti che è possibile aggiungere qualsiasi tipo di messaggio che verrà visualizzato all'utente:

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

In questo esempio, il primo parametro è il campo ID del campo che è interessata da questo messaggio (utile quando il messaggio è un messaggio di convalida per un campo specifico). null significa che il messaggio è un'informazione generale (cioè non collegata a nessun campo particolare).

potete vedere un esempio di questo componente here. Notare che questo esempio utilizza rich:messages che è un'estensione (fornita da RichFaces) del "base" <h:message/>, ma il principio è lo stesso.