2010-01-18 11 views
6

Ho visto che posso aggiungere errori e renderli tramite il tag <form:errors /> e il metodo della classe BindingResult, ma mi chiedo se c'è qualcosa di simile a inviare messaggi di informazioni al JSP.Aggiungi messaggi con Spring

Voglio dire, voglio aggiungere messaggi quando l'operazione è andata a buon fine. So che potrei farlo inviando un errore, ma non avrebbe senso aggiungere errori se non ci sono stati errori.

+0

Grazie per l'anwersd. Come vedo, non esiste una matrice standard come esiste ad esempio in Struts. Avevo già preso in considerazione l'opzione che entrambi avevi proposto, anche se avevo il dubbio che esistesse qualche caratteristica speciale in primavera che potesse gestirlo. – Javi

risposta

2

Interessante. Ho trovato questo in un vecchio mio progetto .:

(questo era un controller di base, ma potrebbe essere un metodo di utilità)

protected void addMessage(String key, boolean isError, 
     HttpServletRequest request, Object... args) { 
    List<Message> msgs = (List<Message>) request.getAttribute(MESSAGES_KEY); 
    if (msgs == null) { 
     msgs = new LinkedList<Message>(); 
    } 

    Message msg = new Message(); 
    msg.setMessage(msg(key, args)); 
    msg.setError(isError); 
    msgs.add(msg); 
    request.setAttribute(MESSAGES_KEY, msgs); 
} 

e poi in una messages.jsp che è stata inclusa in tutte le pagine che ho avuto :

<c:forEach items="${messages}" var="message"> 
    //display messages here 
</c:forEach> 

MESSAGES_KEY è una costante dei miei con un valore di "messaggi" (in modo che sia più avanti accessibile nel ciclo foreach).

La classe Message è un semplice POJO con queste due proprietà. L'ho usato per i messaggi info e per gli errori di non convalida personalizzati.

Questa è una soluzione piuttosto personalizzata, ma forse non avevo ancora trovato una soluzione integrata. Google un po 'di più prima di utilizzare una soluzione del genere.

4

Perché non basta aggiungere i messaggi come proprietà del modello che viene passato alla vista. Nel tuo JSP verificherai se non sono nulli e, in caso contrario, li visualizzi.

+1

Sì, basta avere una proprietà "messaggi" che si cerca come standard. – cjstehno

1

Utilizzare qualcosa come i messaggi Flash in Rails.

La parte difficile è mantenere il messaggio in un reindirizzamento dopo il post. Cioè si invia un modulo e si reindirizza a un'altra pagina che mostra un messaggio che informa l'utente che si è riusciti nell'azione.

È ovvio che non è possibile mantenere il messaggio nella richiesta perché verrà perso dopo il reindirizzamento.

La mia soluzione consiste nel mantenere un bean con scope di sessione che contiene il testo del messaggio e il suo tipo (avviso, avviso o errore). La prima volta che lo leggi in un JSP devi cancellarlo per evitare di mostrarlo più di una volta.

Problemi correlati