2010-02-12 8 views
4

Comment gérer le problème du bouton du navigateur en utilisant le ressort?Comment gérer le problème du bouton du navigateur en utilisant le ressort?

Dans mon application, l'utilisateur se connecte correctement et lorsque l'utilisateur clique sur l'état de la page du bouton précédent n'est pas maintenu. Alors, dois-je maintenir l'état de page, même le utilisateur clique sur le bouton retour/bouton vers l'avant

Merci de

+1

Quel problème de bouton de retour? –

+0

détails du problème mis à jour – Vicky

+0

Vous pouvez le faire facilement en utilisant des interceptions: http://stackoverflow.com/questions/26420941/how-handle-browser-back-button-in-spring-mvc/31217043#31217043 –

Répondre

5

Apparemment, les pages sont été demandées à partir du cache du navigateur. Vous devrez désactiver la mise en cache côté client des pages en question. Vous pouvez le faire en créant un Filter qui écoute sur un url-pattern des pages pour lesquelles vous souhaitez désactiver le cache, par exemple *.jsp. Effectuez les opérations suivantes dans la méthode doFilter():

HttpServletResponse httpres = (HttpServletResponse) response; 
httpres.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
httpres.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
httpres.setDateHeader("Expires", 0); // Proxies. 
chain.doFilter(request, response); 

De cette façon, l'application côté client sera chargé de pas cache les demandes correspondant à la url-pattern de ce filtre. Si vous appuyez sur le bouton Précédent, une requête réelle sera générée à partir du serveur avec les nouvelles données proposées. Pour conserver certaines données côté serveur entre les demandes, vous devez saisir la portée de session ou utiliser les requêtes GET uniquement.

Oh, ne pas oublier d'effacer le cache du navigateur d'abord après la mise en œuvre et avant l'essai;)

0

Configurer un intercepteur à l'intérieur de contexte Servlet cette :

<mvc:interceptors> 
    <mvc:interceptor> 
     <mvc:mapping path="/**/*"/> 
     <beans:bean id="webContentInterceptor" class="org.springframework.web.servlet.mvc.WebContentInterceptor"> 
      <beans:property name="cacheSeconds" value="0"/> 
      <beans:property name="useExpiresHeader" value="true"/> 
      <beans:property name="useCacheControlHeader" value="true"/> 
      <beans:property name="useCacheControlNoStore" value="true"/> 
     </beans:bean> 
    </mvc:interceptor> 
</mvc:interceptors> 

note: ne pas oublier d'enlever votre front ser cache pendant le test de votre application.

Questions connexes