2013-09-03 6 views
0

J'ai une application SmartGWT et un filtre dans lequel j'essaie de comprendre (lors de la connexion) si la demande doit être transmise (par exemple de bureau à mobile). Le code s'exécute et le navigateur fait une requête get mais n'obtient pas de réponse et ne fait pas de redirection. J'ai essayé avec http://google.com et cela n'a pas fonctionné trop ainsi cela doit être quelque chose d'autre.Mon response.sendRedirect ne fonctionne pas

public void doFilter(ServletRequest req, ServletResponse res, 
     FilterChain chain) throws ServletException, IOException { 

    HttpServletRequest request = (HttpServletRequest) req; 
    HttpServletResponse response = (HttpServletResponse) res; 
    HttpSession session = request.getSession(); 

    WURFLHolder wurfl = (WURFLHolder) getFilterConfig().getServletContext().getAttribute(WURFLHolder.class.getName()); 

    WURFLManager manager = wurfl.getWURFLManager(); 

    Device device = manager.getDeviceForRequest(request); 

    boolean webBrowser = isWebBrowser(device); 

    String path = ((HttpServletRequest) request).getRequestURI(); 

    boolean isBrowserOnMobile = true; // webBrowser && path.contains(MOBILE_REQ_PATH); 

    boolean isMobileOnDesktop = !webBrowser && path.contains(DESKTOP_REQ_PATH); 

    if (isBrowserOnMobile || isMobileOnDesktop) { 
     if (isBrowserOnMobile) { 
      path = "http://www.google.com"; 
     } else { 
      path = "/PregledPredmeta/MobileAppEntryPoint.html"; 
     } 
     response.encodeRedirectURL(path); 
     response.sendRedirect(path); 
     return; 

......

+0

Imprimez-vous quelque chose avant que cette méthode ne soit appelée? Si non, avez-vous des erreurs? – BackSlash

Répondre

2

Avez-vous envoyé un contenu à la réponse HTTP avant d'utiliser response.sendRedirect()? Pour utiliser HTTP Redirect HEADER, vous ne pouvez pas envoyer de réponse au navigateur. Même espace ou saut de ligne/nouvelle ligne peut arrêter la redirection.

Si vous avez vérifié tout le code et vérifié que vous n'avez envoyé aucun contenu au navigateur, vous pouvez utiliser une redirection JavaScript <script>location.href='yoururl';</script>. Ce n'est pas une solution cool, mais cela fonctionne.

+0

Vous avez raison, j'ai vérifié le code du filtre, mais je ne pensais pas que ce n'était pas la première chose à appeler. – Andrija

Questions connexes