powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / не работает response.sendRedirect в Internet Explorer
8 сообщений из 8, страница 1 из 1
не работает response.sendRedirect в Internet Explorer
    #34460984
Tural
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разрабатываю веб-приложение на JSP. Принцип обновление данных сделал аналогично тому как здесь написано, т.е. GET-ом получаю данные, POST-ом обновляю, потом делаю Redirect на тот URL который сформировал для получения этих же данных - на предыдущей GET запрос, или же совсем на другую страницу. Везде все работало нормально, но на одной страничке возникла проблема. Обычно для редактирования, ну скажем пользователей, открывал страницу редактирования пользователей, где давал в качестве параметра ID пользователя "http://localhost:8080/CCS/addEditUser.jsp?editID=21". Далее при посте обновлял данные и делал redirect на этот же URL. Получалось как бы при нажатии на Save, страница не меняется, данные сохраняются, и при Refresh-е не происходит POST.
Теперь в списке пользователей по адресу "http://localhost:8080/CCS/users.jsp", где рисуется таблица со списком пользователей, для отключения пользователя (хочу прямо из списка не открывая страницу редактирования, нажав на один линк, делать это действие), поставил форму только с hidden полями и при POST-е срабатывает метод, который обновляет данные. Сразу после вызова этого метода, стоит
Код: plaintext
response.sendRedirect("users.jsp");
В браузере Mozilla Firefox все работает на ура. Но в Internet Explorer, данные меняются, но страница не обновляется и в следствии слово "Disable" не меняется на "Enable" или же наоборот. Проверял дебаггером, после обновления данных вылета по исключению не бывает, и все идет дальше своим ходом, т.е. как бы срабатывает этот шаг. И если бы не срабатывал бы, то в Firefox все не работала бы правильно. Для отключения кэша в браузере использую:
Код: plaintext
1.
2.
3.
   <meta HTTP-EQUIV="Pragma" content="no-cache"/>
   <meta HTTP-EQUIV="Cache-Control" content="no-cache"/>
   <meta HTTP-EQUIV="Expires" content="-1"/>
Как можно исправить ситуацию?
...
Рейтинг: 0 / 0
не работает response.sendRedirect в Internet Explorer
    #34465598
Tural
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может как-то определить браузер и Refresh делать? Неужели нет решения проблемы?
...
Рейтинг: 0 / 0
не работает response.sendRedirect в Internet Explorer
    #34465647
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tural
Код: plaintext
1.
2.
3.
   <meta HTTP-EQUIV="Pragma" content="no-cache"/>
   <meta HTTP-EQUIV="Cache-Control" content="no-cache"/>
   <meta HTTP-EQUIV="Expires" content="-1"/>
Как можно исправить ситуацию? исправляй
Код: plaintext
response.setHeader("Cache-Control", "no-cache");
...
Рейтинг: 0 / 0
не работает response.sendRedirect в Internet Explorer
    #34465654
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- используйте для отмены кэширования не мета тэги, а аналогичные заголовки HTTP
...
Рейтинг: 0 / 0
не работает response.sendRedirect в Internet Explorer
    #34465811
Tural
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
setHeader не помог. По-моему в случае с Internet Explorer не работает response.sendRedirect. Я заменил
Код: plaintext
response.sendRedirect("users.jsp");
на
Код: plaintext
response.sendRedirect("http://www.google.com/");
Google не открывается. В Mozilla все работает.
...
Рейтинг: 0 / 0
не работает response.sendRedirect в Internet Explorer
    #34467186
Tural
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел с помошью HttpWatch-а. Увидел следующее:
Код: plaintext
00:02:33.031	0.017	*	POST	Aborted	text/html;charset=UTF-8	http://localhost:8080/CCS/users.jsp
и дальше ничего.
Кто может помочь в чем дело и почу был аборт. И почему после того как происходит аборт POST-а изменение данных вступают в силу, т.е. срабатывает метод который находится до redirect-а.

Во вкладке Summary написано:
Код: plaintext
1.
2.
Submit Form	Browser submitted values to http://localhost:8080/CCS/users.jsp		Completed
Started At	2007-Apr-17 17:52:26.605						Completed
HTTP Request	Unconditional request sent for http://localhost:8080/CCS/users.jsp	Aborted
...
Рейтинг: 0 / 0
не работает response.sendRedirect в Internet Explorer
    #34467489
garry_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
действительно интересно. вот так не работает в ie
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
     public   void  doGet(HttpServletRequest request, 
                      HttpServletResponse response)  throws  ServletException, IOException {
        response.setContentType(CONTENT_TYPE);
        //response.sendRedirect("http://www.google.ru");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>Servlet1</title></head>");
        out.println("<body>");
        out.println("<p>The servlet has received a GET. This is the reply.</p>");
        out.println("</body></html>");
        out.close();
        response.sendRedirect("http://www.google.ru");
        
    }
а вот так работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
     public   void  doGet(HttpServletRequest request, 
                      HttpServletResponse response)  throws  ServletException, IOException {
        response.setContentType(CONTENT_TYPE);
        response.sendRedirect("http://www.google.ru");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>Servlet1</title></head>");
        out.println("<body>");
        out.println("<p>The servlet has received a GET. This is the reply.</p>");
        out.println("</body></html>");
        out.close();
        //response.sendRedirect("http://www.google.ru");
        
    }
...
Рейтинг: 0 / 0
не работает response.sendRedirect в Internet Explorer
    #34468306
Tural
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня JSP. Это часть логики стоит на верхней части страницы. Вот часть кода страницы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
<%@ page  import ="az.ub.ccs.beans.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page errorPage="error.jsp" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="bc" scope="page"  class ="az.ub.ccs.beans.BreadCrumb" />
<jsp:useBean id="user" scope="request"  class ="az.ub.ccs.beans.User"/>
<c: if  test="${sessionScope.active == null}"><c:redirect url="login.jsp" /></c: if >
<%
    if (request.getParameter("stateAction") !=  null )
   {
       int  state = (request.getParameter("stateAction").equals("enable")) ?  0  :  1 ;
      User.changeUserState(Integer.parseInt(request.getParameter("itemID")), state);
      response.sendRedirect("users.jsp");
      //response.setStatus(HttpServletResponse.SC_SEE_OTHER);
      //response.setHeader("Location", "users.jsp");
   }

   bc.add("Пользователи");
%>

<jsp:include page="top.jsp" flush="true">
   <jsp:param name="breadCrumbString" value="${bc.breadCrumbsAsHTML}"/>
   <jsp:param name="pageTitle" value="Пользователи"/>
</jsp:include>
<tr>
   <td>
      <table border="1" width="100%">
         <tr  class ="tableHeader">
            <td>ID</td>
            <td>Имя пользователя</td>
            <td>Логин</td>
            <td>Номер группы</td>
            <td>Название группы</td>
            <td>Email</td>
            <td>Номер</td>
            <td colspan="2">Действие</td>
         </tr>
         <c:forEach items="${user.userList}" var="user">
         <tr>
            <td align="right">"${user.userID}"</td>
            <td><c:out value="${user.userName}"/></td>
            . . .
         </c:forEach>
         <tr>
            <td colspan="7"> </td>
            <td colspan="2"><a href="addEditUser.jsp">[Add  new ]</a></td>
         </tr>
      </table>
      <form name="stateForm" method="post" action="users.jsp">
         <input type="hidden" name="itemID"/>
         <input type="hidden" name="stateAction"/>
      </form>
   </td>
</tr>
<jsp:include page="bottom.jsp" flush="true"/>
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / не работает response.sendRedirect в Internet Explorer
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]