Les messages d'état sur le Spring MVC basé sur le site (annotation contrôleur)
Quelle est la meilleure façon d'organiser les messages d'état ("Vos données ont été correctement enregistrées/ajouté/supprimé") sur le Spring MVC basé sur le site à l'aide de l'annotation contrôleur?
Donc, la question est dans le moyen d'envoyer le message à partir de l'après-méthode contolleur.
Vous devez vous connecter pour publier un commentaire.
Comme mentionné par muanis, depuis le printemps 3.1, la meilleure approche serait d'utiliser RedirectAttributes. J'ai ajouté i18n à l'exemple donné dans le blog. Donc, ce serait un exemple complet.
Ajouter un message approprié à votre message bundle, dire des messages.les propriétés.
Modifier votre fichier jspx d'utiliser l'attribut approprié
Une méthode éprouvée consiste à utiliser un flash spécial de la portée pour les messages qui doivent être conservés jusqu'à la prochaine demande.
Je tiens à utiliser une session étendue objet flash:
Spécial MVC intercepteur va lire le flash valeurs de l'objet flash et de les placer dans le champ d'application request:
Maintenant dans votre contrôleur, vous pouvez simplement placer des messages dans "flash scope":
De votre point de vue vous itérer sur les messages flash:
J'espère que cela vous aide.
Après cogner ma tête contre ça pendant un moment, j'ai finalement fait le travail.
Je suis en utilisant le printemps 3.1 et il a un support pour requestFlashAttributes qui sont passés au travers des redirections.
La clé pour la résolution de mon problème a été de changer le type de retour de chaînes et de ne pas ModelAndView objets.
Ce gars a fait un excellent article sur l'utilisation de flash messages avec le printemps (http://www.tikalk.com/java/redirectattributes-new-feature-spring-mvc-31)
Vous devriez rester simple et à utiliser le HTTP 1.1 codes d'État. Ainsi, pour réussir un appel de vous retourner un 200 OK. Et sur le côté client, si vous souhaitez afficher un message spécifique à l'utilisateur lorsque le contrôleur retourne une de 200, alors vous montrez là.
Si vous voulez dire que la page est rechargée après certains POST, vous pouvez inclure un drapeau en vous vue (JSP ou de vitesse, ou tout ce que vous utilisez). E. g. quelque chose comme ceci
Et le message de votre bundle devrait contenir un message pour que le code.
Si vous ne l'AJAX POST pour la présentation des données (c'est à dire la page n'est pas rechargée et vous avez besoin d'afficher un message), vous pourriez
1) vous rendre JS fichiers dynamiques (JSP ou de Vitesse, encore une fois) et insérez
<spring:message>
balises là (je n'aime pas vraiment cette option)ou
2) suivez les conseils de ce lien et l'utilisation
@ResponseBody
pour revenir à un statut d'objet à votre JS. À l'intérieur de l'objet que vous marquer comme@ResponseBody
vous pouvez mettre à la fois le statut et les messages. E. g. à l'aide de votre message lots comme dans ce cas.Le moyen le plus simple de l'affichage de messages sur votre page JSP est d'avoir une portée (peut-être de la session, peut-être la demande) de l'objet qui contient les messages que vous souhaitez afficher. Par exemple, vous pouvez effectuer les opérations suivantes:
Le long avec un code d'état, vous pouvez toujours définir un en-tête avec le message que vous voulez. Bien sûr, c'est vraiment seulement une bonne idée si vous avez le contrôle sur la façon dont le contrôleur sera utilisé (c'est à dire, pas de tiers).