forward w Servlecie

0

Mam problem z metodą doPost(...)

Dla kodu poniżej, w metodzie doPost(...) jest brak reakcji - view.forward(request, response); w ogóle nie reaguje.

public class AssignService extends HttpServlet {

      public void doGet(HttpServletRequest request, HttpServletResponse response)
                    throws ServletException, IOException
              {
                // jakies operacje

                RequestDispatcher view = request.getRequestDispatcher("c.jsp");

                view.forward(request, response);

              }

      public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

            RequestDispatcher view = request.getRequestDispatcher ("c.jsp");

                view.forward(request, response); // BRAK REAKCJI

      }

}

Dziwne jest to dlatego, że podobny kod mam w metodzie doGet(...) i tam wszystko działa bardzo dobrze!
A jeśli w metodzie doPost(...) zrobię przekierowanie do doGet(...) to również działa dobrze:

public class AssignService extends HttpServlet {

      public void doGet(HttpServletRequest request, HttpServletResponse response)
                    throws ServletException, IOException
              {
                // jakies operacje

                RequestDispatcher view = request.getRequestDispatcher("c.jsp");

                view.forward(request, response);

              }

      public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

            doGet(request, response); // to działa OK

      }

}

Jakie jest wytłumaczenie, że w pierwszym listeningu, metoda doPost(...) wykazuje brak reakcji, a w drugim działa prawidłowo?

0

A czy w przypadku metody Post wysyłasz dane tą metodą?

0

Nie wiem jakie jest wytłumaczenie, ja przekierowuje tak (w doGet() i w doPost())

getServletContext().getRequestDispatcher(...).forward(request,response);

i nie mam żadnych problemów

0

Oczywiście, że wysyłam formularz metodą POST.

bo napisał(a)

Nie wiem jakie jest wytłumaczenie, ja przekierowuje tak (w doGet() i w doPost())

getServletContext().getRequestDispatcher(...).forward(request,response);

i nie mam żadnych problemów

Oba sposoby przekierowywania są sobie równoważne - to samo co Ty zapisałeś w jednej linii, ja rozbiłem na dwie.

Mam problem ponieważ tak jak napisałem powyżej, przekierowanie w metodzie doGet(..) działa świetnie, a w doPost(..) w ogóle - mimo, że wklepuje dokładnie ten sam kod. Zadałem tutaj pytanie, bo być może ktoś doświadczony skojarzy, co może być przyczyną. Tymbardziej jest to dziwne, że gdy w metodzie doPost(..) przekażę sterowanie do doGet(..) to jest dobrze, ale niestety w swojej aplikacji nie mogę skorzystać z tego rozwiązania...

0

Mi chodziło o różnicę między request.getRequestDispatcher() a ServletContext.getRequestDispatcher(), a nie o różnicę między jednym wierszem a dwoma. Sprawdziłem w dokumentacji, masz rację - nie ma różnicy.
W obu kodach który zamieściłeś przekierowanie które działa jest poprzedzone jakimiś operacjami, a niedziałające nie jest. Może w braku tych operacji tkwi przyczyna.

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