Pregunta

estoy mostrando ActionMessages través de un archivo JSP por el comando siguiente:

<logic:messagesPresent message="true">
    <ul id="messsages">
        <html:messages id="msg" message="true">
            <li><bean:write name="msg"/> </li>
        </html:messages>
    </ul>
</logic:messagesPresent>

Ahora quiero mostrar sólo los mensajes seleccionados. ¿Cómo puedo indicar qué mensaje a mostrar?

Actualización

En realidad tengo dos objetos ActionMessages - messages y warnings. Ahora quiero mostrar dos de ellos en la página JSP separada ... Una página para mostrar messages y otra para warnings.

Entonces, ¿cómo indicar en la página JSP que los mensajes que desea mostrar?



Actualización - 2

Ahora, he encontrado una cosa extraña.

saveMessages(request, messages);
saveMessages(request, warnings);

Cuando escribí el código anterior, sólo se warnings estaba funcionando. Cuando invirtió el orden de las dos declaraciones anteriores, entonces sólo messages estaba trabajando.

Parece que podemos añadir sólo un objeto ActionMessages en una solicitud. Si es correcta, entonces la forma de mostrar los mensajes en dos objetos ActionMessages por separado.

¿Fue útil?

Solución

simple,

Separa tu messages y su warnings: En su acción puntales, guardar los mensajes y las advertencias de la siguiente manera:

//For messages
saveMessages(request, messages);

//For warnings
saveErrors(request, warnings);

Para mostrarlos:

<logic:messagesPresent message="true">
    <html:messages id="aMsg" message="true">
        <logic:present name="aMsg">
            <!-- Messages -->
            <div class="messages">
                <bean:write name="aMsg" filter="false" />
            </div>
        </logic:present>
    </html:messages>
</logic:messagesPresent>

<logic:messagesPresent message="false">
    <html:messages id="aMsg" message="false">
        <logic:present name="aMsg">
            <!-- Warnings-->
            <div class="warnings">
                <bean:write name="aMsg" filter="false" />
            </div>
        </logic:present>
    </html:messages>
</logic:messagesPresent>

Esta muestra toda messages (estableciendo message="true")

<html:messages id="aMsg" message="true">

Esta muestra toda warnings (estableciendo message="false")

<html:messages id="aMsg" message="false">

Actualizar Al ver que se está limpiando ahora su pregunta, la forma más sencilla sería la de hacer esto.

Tener un cierto parámetro que indique si el usuario quisiera ver messages o warnings. En los puntales de acción, solicitar la bandera y comprobar si el usuario selecciona la visualización de mensajes o avisos. A continuación, guarda bien warnings o messages en base a la selección del usuario y mostrar la misma página (como se escribió más arriba) para mostrar mensajes.

La razón es la siguiente, puntales (al almacenar más mensajes o errores) lo almacena en la solicitud o la sesión con el siguiente constante.

  • Globals.MESSAGE_KEY (que se asigna cuando se hace saveMessages(request, messages))
  • Globals.ERROR_KEY (que se asigna cuando se hace saveErrors(request, errors))

utilizando <logic:messagesPresent message="true">, Struts busca el MESSAGE_KEY (si el mensaje = true) o ERROR_KEY (si el mensaje = false) o ambos (si el mensaje = ninguno). Usted no tiene control de eso.

TLD <html:messages /> comenta estados:

  

Por defecto la etiqueta recuperará el   frijol que se repetirá el relevo de la   Globals.ERROR_KEY cadena constante, España   pero si este atributo se establece en 'verdadero'   el grano se recupera de la   Globals.MESSAGE_KEY cadena constante.   Además, si se establece en 'verdadero', cualquier   valor asignado al atributo de nombre   será ignorado.

También puede escribir scriplet para comprobar si esas llaves existe, entonces <logic:iterate /> a través de la tecla para mostrar los mensajes (pero que va a ser demasiado trabajo).

Espero que esto ayude.

Otros consejos

En lugar de utilizar el atributo message en las etiquetas messagesPresent y messages, puede utilizar el atributo name para especificar el nombre de los ActionMessages objeto que haya en la página, la solicitud, la sesión, o el alcance de la aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top