2010-01-18 12 views
6

He visto que puedo agregar errores y representarlos a través de la etiqueta <form:errors /> y el addError() método de la clase BindingResult, pero me pregunto si hay algo similar para enviar mensajes de información al JSP.Agregar mensajes con Spring

Quiero decir, quiero agregar mensajes cuando la operación ha sido exitosa. Sé que podría hacerlo enviando un error, pero no tendría sentido agregar errores cuando no haya habido ningún error.

+0

Gracias por el anwersd. Como veo, no existe una matriz estándar como existe, por ejemplo, en Struts. Ya había considerado la opción que ambos habían propuesto, aunque tenía la duda de si había alguna característica especial en Spring que pudiera manejar esto. – Javi

Respuesta

2

Interesante. He encontrado esto en un viejo proyecto mío .:

(esto fue un controlador de base, pero bien podría ser un método de utilidad)

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); 
} 

y luego en una messages.jsp que fue incluido en todas las páginas que tenía :

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

MESSAGES_KEY es una constante de mina con un valor de "mensajes" (de modo que es más tarde accesible en el bucle forEach).

La clase Message es un POJO simple con esas dos propiedades. Lo usé para mensajes de información así como también para errores personalizados sin validación.

Esta es una solución bastante personalizada, pero quizás no había encontrado una solución incorporada. Google un poco más antes de usar una solución de este tipo.

4

¿Por qué no acaba de agregar los mensajes como propiedades del modelo que se pasa a la vista. En su JSP, debería verificar si no son nulos, y si no, mostrarlos.

+1

Sí, solo tiene una propiedad de "mensajes" que busca como estándar. – cjstehno

1

Use algo así como mensajes Flash en Rails.

La parte difícil es mantener el mensaje en un redirigir después de la publicación. Es decir. envía un formulario y lo redirecciona a otra página que muestra un mensaje que le informa que ha tenido éxito en su acción.

Es obvio que no puede mantener el mensaje en la solicitud porque se perderá después de la redirección.

Mi solución consiste en mantener una sesión con ámbito de bean que contiene el texto del mensaje y su tipo (aviso, advertencia o error). La primera vez que lo lea en un JSP debe borrarlo para evitar mostrarlo más de una vez.

Cuestiones relacionadas