Question

J'affichons ActionMessages par un fichier JSP par la commande suivante:

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

Maintenant, je veux afficher uniquement les messages sélectionnés. Comment puis-je indiquer quel message à afficher?

Mise à jour

En fait, j'ai deux objet ActionMessages - messages et warnings. Maintenant, je veux afficher tous les deux sur la page JSP séparée ... Une page pour montrer messages et d'autres pour warnings.

Alors, comment indiquer dans la page JSP que les messages à afficher?


Mise à jour - 2

Maintenant, j'ai trouvé une chose étrange.

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

Quand j'ai écrit le code ci-dessus, que warnings travaillait. Quand je renversé l'ordre des deux déclarations ci-dessus, alors que messages travaillait.

Il semble que nous pouvons ajouter qu'un seul objet ActionMessages dans une requête. Si elle est correcte, alors comment afficher des messages dans deux objets ActionMessages séparement.

Était-ce utile?

La solution

Simple,

Séparez votre messages et votre warnings: Dans votre action Struts, enregistrez vos messages et mises en garde comme suit:

//For messages
saveMessages(request, messages);

//For warnings
saveErrors(request, warnings);

Pour les afficher:

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

affiche toutes messages (en définissant message="true")

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

affiche toutes warnings (en définissant message="false")

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

UPDATE Voyant que vous effacer maintenant votre question, la façon la plus simple serait de le faire.

Avoir un certain drapeau qui indique si l'utilisateur souhaite voir messages ou warnings. Sur l'action Struts, demander le drapeau et vérifier si l'utilisateur a sélectionné l'affichage des messages ou des avertissements. Ensuite, vous enregistrez soit warnings ou messages en fonction de la sélection de l'utilisateur et afficher la même page (comme vous avez écrit ci-dessus) pour afficher les messages.

La raison est, Struts (lorsque vous le stockage des messages ou des erreurs) stocke sur demande ou d'une session avec la constante suivante.

  • Globals.MESSAGE_KEY (qui est attribué lorsque vous faites saveMessages(request, messages))
  • Globals.ERROR_KEY (qui est attribué lorsque vous faites saveErrors(request, errors))

lors de l'utilisation <logic:messagesPresent message="true">, Struts recherche le MESSAGE_KEY (si le message = true) ou ERROR_KEY (si le message = false) ou les deux (si le message = aucun). Vous avez aucun contrôle de cela.

<html:messages /> TLD commente les états:

  

Par défaut la balise récupérera la   haricots il itérer de la   Globals.ERROR_KEY chaîne constante,
  mais si cet attribut est réglé sur « true »   la fève sera récupéré à partir du   Globals.MESSAGE_KEY chaîne constante.   Aussi, si ce paramètre est réglé, tout « vrai »   valeur attribuée à l'attribut name   seront ignorés.

Vous pouvez également écrire scriptlet pour vérifier si ces clés EXISTE, <logic:iterate /> puis par la touche pour afficher les messages (mais ce sera trop de travail).

Hope this helps.

Autres conseils

Au lieu d'utiliser l'attribut message sur les messagesPresent et les balises messages, vous pouvez utiliser l'attribut name pour spécifier le nom des ActionMessages objet que vous avez à la page, demande, session ou champ d'application.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top