2016-03-11 3 views
0

Это код в doPost:Как избежать окончательного или избежать переадресации в корпусе сервлетов?

try { 
    switch (request.getParameter("action")){ 
     case "delete": 
      request.setAttribute("message", "Deleting..."); 
      break; 
     case "update": 
      request.setAttribute("message", "Updating..."); 
      break; 
     case "new": 
      response.sendRedirect("createNew.jsp");  
      break; 
     default: 
      super.doPost(request, response); 
      break; 
    } 
} finally { 
    request.getRequestDispatcher("backHome.jsp").forward(request, response); 
    out.close(); 
} 

Проблема заключается в конце концов я получаю это исключение, когда дело «новый»: java.lang.IllegalStateException:

ответ

1

В случае «новый» вы делаете response.sendRedirect("createNew.jsp");. В этот момент записывается поток ответов.

В заключение вы делаете request.getRequestDispatcher("backHome.jsp").forward(request, response);. Он пересылает другой URL-адрес.

Но так как на отклик уже какое-то содержание написано, другой вперед не может случиться. Этот бросок java.lang.IllegalStateException.

+0

и, что я могу сделать, чтобы решить эту проблему? вы можете помочь? –

+0

Вы хотите выполнить то, что в конечном итоге для всех случаев? –

+0

, наконец, перенаправляет, но если какой-либо другой случай перенаправляет другой способ, не генерирует исключение. –