Je ressens un comportement étrange dans la demande Spring MVC 3.2, et j'ai remarqué que cela ne se produit que lorsque la redirection est effectuée de manière alternative; Donc, mes questions sont: p>
fait ' redirigation: / processus strong>' tout fort> différent de
' Redirection: processus em> strong>' pour rediriger vers un contrôleur interne? p>
La barre oblique ajoutée fait-elle une différence, telle que l'affectation de la manutention de la session? P> li>
Quelles sont les raisons d'une session perdue (ou d'attributs de session perdues)? p>
Il y a une valeur que j'ai lu via ma candidature; Même si je redirige dans de nombreux cas, quand j'ajoute un Tout indice sur la façon de résoudre la valeur de la session perdue? P> Li>
ol>
httpRequest.getsession (). setattribute code> et
httpsession.getattribute code> pour accéder à la session. P>
3 Réponses :
Juste une note: Sauf pour les causes externes en raison d'autres erreurs, ni Mais ces 2 redirections sont Que se passe-t-il suivant dépend de vos mappages de contrôleur. P> / code> est une barre oblique backslash est
\ code>. p>
redirigation: processus code> non
redirigation: / processus code> devrait changer quelque chose aussi longtemps que la session est concernée. P>
http: //server.domain/myapp/local/parart code>, code>, < code> redirection: processus code> demanderait au navigateur de demander à
http: //server.domain/myapp/local/parart/process code>, lorsque
redirige: / processus code> serait Demandez au navigateur de demander
http: //server.domain/myapp/process code>. p>
Ceci est terriblement bizarre alors. Je reçois une réponse sur un contrôleur URI ' domaine / app / résultat ', mais je fais "redirection: processus" Je frappe le contrôleur ayant des "processus" requisMapping (et non "résultat / processus"). Basé sur votre description, cela ne devrait pas être possible
La valeur @requestMapping est-elle pour le contrôleur "/Process.htm"? Si oui, avez-vous essayé d'utiliser "Rediriger: /Process.htm"?
Non, il n'y a pas de suffixe ".htm", j'accélère mon contrôleur correct, mais je perds des sessions, que je fasse "rediriger: processus" ou "rediriger: / proceess" c'est pareil.
avec '/' Vous déclarez un chemin de root, qui est votre chemin de contexte servlet. Sans '/', il va généralement sur un chemin relativement sur votre sous-chemin actuel. Par exemple, si vous êtes chez '/ Go / URL', vous dirigez vers '/ Go / URL / Suivant', pas '/ Suivant'. P>
Je n'ai pas vérifié le code source du printemps, mais c'est comme ça que cela fonctionne dans le navigateur Web habituellement. P>
EDIT: P>
Je suis désolé, au printemps MVC, vous devez toujours fournir un chemin complet, pas seulement un chemin relatif. Donc, vous devriez faire "rediriger: / complet / chemin". P>
Droite, et j'utilise un chemin à partir de '/' maintenant, tout bon. Cependant, je n'ai pas vu comment votre réponse est pertinente en ce qui concerne les sessions perdues.
Vous voulez probablement vérifier la valeur que vous définissez n'est pas nulle en premier lieu ...
Vous voulez probablement analyser, ce qui cause les attributs de la session perdue. Une approche consisterait à mettre en œuvre votre propre httpessessattributelistener et connectez-vous Public Void Attributeremoved (HTTPSessionBindingEventVent) CODE> Mise en œuvre. Gardez également le niveau de journalisation du ressort pour déboguer. P>
Merci, cependant, je ne peux pas utiliser de débogage sur la production, ce qui n'est pas encore reproduit localement. Je vais donc mettre en œuvre ce que vous avez mentionné et voyez ce qui se passe.
Trace de la pile ? Erreur? Code causant l'erreur?
Je reçois une nullpointerException en raison de la valeur que je vis de la session étant null. Cela se produit une douzaine de fois au cours de la journée.
Cela se produit dans une méthode d'obtention de contrôleur, lorsque je reviendrai (comme nom de vue) Value 'Rediriger: / Process'. Note, je ne peux pas reproduire cela localement.
Documentation de printemps A >: Un nom de vue logique telle que
redirigation: / myApp / certains / ressource code> redirigera par rapport au contexte de servlet actuel, tandis qu'un nom tel que
redirige: http: //myhost.com/ Certains / arbitraires / chemins code> se redirrent vers une URL absolue.
Dans la plupart des endroits de mon code, j'utilise "Redirection: processus" pour rediriger vers un autre contrôleur dans la même application, pas de barre oblique inverse, alors le ressort n'a pas vraiment de sens ici, surtout que l'ajout du backslash est apparemment B> causer des problèmes.