Błąd w servlecie podczas redirect.

0

Witam wszystkich,

bez obwijania w bawełnę... mam taki servlet:

ChangeLanguage:

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
           //response.setContentType("text/html;charset=UTF-8");
           String newLang = request.getParameter("newLanguage");
           String pageRedir = Base64.decode(request.getParameter("pageRedirect"));
           String[] pq = pageRedir.split("%%");

           Lang language = new Lang(newLang);
           
           if(language.isValid() && pq.length == 2)
           {
               CookieParameters cook = new CookieParameters(request, response);
               cook.setCookie("CLIENT_LANG", newLang);

               Query q = em.createNamedQuery("AppPage.findById");
               q.setParameter("id", new Long(pq[1]));
               AppPage item = (AppPage) q.getSingleResult();

               UrlParameters url = new UrlParameters(request, response);
               url.setLanguage(language);

               //response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
               //String newLocn = new DirLocation().WWW_HOST + new DirLocation().WWW_DIR;
               String newLocn = new ParseFromString().multiReplace(pq[0], newLang, url.setTitle(url.getLanguage().getTranslate(item.getTitle())));
               //System.out.println(newLocn);
               //response.setHeader("Location", newLocn);
               response.sendRedirect(newLocn);
               
       		//RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/index.jsp");
		//dispatcher.forward(request, response);


           }

    }

efektem tego jest illegal:

java.lang.IllegalStateException
	org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)
	javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:126)
	javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:126)
	eu.farmreturn.page.servlet.ChangeLanguage.processRequest(ChangeLanguage.java:66)
	eu.farmreturn.page.servlet.ChangeLanguage.doGet(ChangeLanguage.java:87)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
	org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
	org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
	org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

jak tego się pozbyć? próbowałem różnych metod przekierowania (zakomentowana część w kodzie), ale zawsze jest coś nie tak... ehhh już nie wiem czego mam próbować...

pomocy....

0

Zapewne za późno przekierowujesz, coś już zostało wysłane.

0

No dobra jak sprawdzić czy coś już zostało wysłane do przeglądarki?

Inna metoda:

       		
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/index.jsp");
dispatcher.forward(request, response);

błąd:

java.lang.IllegalStateException: Cannot forward after response has been committed
	eu.farmreturn.page.servlet.ChangeLanguage.processRequest(ChangeLanguage.java:69)
	eu.farmreturn.page.servlet.ChangeLanguage.doGet(ChangeLanguage.java:87)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
	org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
	org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
	org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

---edit

Ok już wszystko jasne wysyłałem podwójnie redirect tyle że to pierwsze przekierowanie było w innej klasie i nie zauważyłem tego :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1