redirect Spring: numéro préfixe
-
26-09-2019 - |
Question
J'ai une application qui utilise Spring 3. J'ai un résolveur de vue qui construit mon point de vue sur la base d'une chaîne. Donc, dans mes contrôleurs d'avoir des méthodes comme celle-ci.
@RequestMapping(...)
public String method(){
//Some proccessing
return "tiles:tileName"
}
Je dois retourner un RedirectView pour résoudre la soumission en double en raison de la mise à jour de la page dans le navigateur, donc je l'ai pensé à utiliser redirect Spring: préfixe. Le problème est qu'il redirige uniquement lorsque l'utilisateur une URL que je modifie le préfixe (pas avec un nom d'un résolveur peut comprendre). Je voulais faire quelque chose comme ceci:
@RequestMapping(...)
public String method(){
//Some proccessing
return "redirect:tiles:tileName"
}
Y at-il moyen d'utiliser RedirectView avec la chaîne (le nom de la vue résoluble) je reçois de la méthode every du contrôleur?
Merci
La solution
l'appel préfixé par redirect: est une URL, qui est envoyé dans un navigateur standard redirection 302. vous ne pouvez pas rediriger à une vue, car une vue n'est pas une URL. à la place, vous aurez besoin d'une nouvelle cartographie servelet à une vue « succès », puis redirigez qu'au lieu
@RequestMapping("processing.htm")
public String method(){
//Some proccessing
return "redirect:success.htm"
}
@RequestMapping("success.htm")
public String method(){
return "tiles:tileName"
}
ce cas fonctionne très bien quand il vous suffit de montrer une page « merci », qui ne nécessite pas des données spécifiques de l'étape de traitement. Cependant, si votre page succès doit montrer des informations de traitement, il y a 2 façons de le faire.
1) transmettre les informations dans l'URL comme un poste get ( "redirect: success.htm message = salut"). c'est incroyablement piratable, et donc très unrecommended.
2) la meilleure façon est de stocker des informations dans la session http, en utilisant @SessionAttributes
et @ModelAttribute