Domanda

I sono la visualizzazione ActionMessages attraverso un file JSP con il seguente comando:

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

Ora voglio visualizzare solo i messaggi selezionati. Come posso indicare che il messaggio per visualizzare?

Aggiornamento

In realtà ho due oggetti ActionMessages - messages e warnings. Ora voglio visualizzare entrambi a pagina JSP separata ... Una pagina per mostrare messages e altro per warnings.

Così come per indicare nella pagina JSP ciò che i messaggi da visualizzare?


Aggiornamento - 2

Ora, ho trovato una cosa strana.

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

Quando ho scritto il codice di cui sopra, solo warnings stava lavorando. Quando ho invertito l'ordine delle due precedenti affermazioni, allora solo messages stava lavorando.

Sembra che siamo in grado di aggiungere un solo oggetto ActionMessages in una richiesta. Se è corretto, allora come per visualizzare i messaggi in due oggetti ActionMessages separatamente.

È stato utile?

Soluzione

Semplice,

Separare i messages e la tua warnings: Nella tua azione montanti, salvare i messaggi e gli avvisi nel seguente modo:

//For messages
saveMessages(request, messages);

//For warnings
saveErrors(request, warnings);

Per visualizzarli:

<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>

Questa mostra tutto messages (impostando message="true")

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

Questa mostra tutto warnings (impostando message="false")

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

Aggiorna Vedendo che si sta ora svuotare la domanda, il modo più semplice sarebbe quella di fare questo.

Avere una certa bandiera che indicherà se l'utente desidera visualizzare messages o warnings. Sul Struts Azione, richiedere la bandiera e controllare se l'utente ha selezionato la visualizzazione di messaggi o avvisi. È quindi salvare sia warnings o messages in base alla selezione dell'utente e visualizzare la stessa pagina (come scritto sopra) per visualizzare i messaggi.

La ragione è questa, Struts (quando la memorizzazione di messaggi o errori) memorizza su richiesta o una sessione con la seguente costante.

  • Globals.MESSAGE_KEY (che viene assegnato quando si fa saveMessages(request, messages))
  • Globals.ERROR_KEY (che viene assegnato quando si fa saveErrors(request, errors))

quando si utilizza <logic:messagesPresent message="true">, Struts cerca la MESSAGE_KEY (se il messaggio = true) o ERROR_KEY (se il messaggio = false) o entrambi (se il messaggio = nessuno). Non avete il controllo di questo.

<html:messages /> TLD commenta stati:

  

Per impostazione predefinita, il tag sarà recuperare il   fagiolo sarà iterare dal   Globals.ERROR_KEY stringa costante,
  ma se questo attributo è impostato su 'vero'   il fagiolo sarà recuperato dal   Globals.MESSAGE_KEY stringa costante.   Anche se questo è impostato su 'vero', qualsiasi   valore assegnato all'attributo nome   saranno ignorati.

Si può anche scrivere scriptlet per verificare se quelle chiavi esiste, allora <logic:iterate /> tramite il tasto per visualizzare i messaggi (ma che saranno troppo lavoro).

Spero che questo aiuti.

Altri suggerimenti

Invece di usare l'attributo message sulle messagesPresent e messages tag, è possibile utilizzare l'attributo name per specificare il nome dei ActionMessages oggetto che avete nella pagina richiesta, sessione, o portata di applicazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top