JSP getParameter (проблема IE) - PullRequest
       0

JSP getParameter (проблема IE)

2 голосов
/ 23 августа 2010

У меня есть следующее из:

<form action="relogin.jsp" method="post">
  <input type="text" id="authname" name="login" value="<%=login%>" tabindex="1" title="<%=bundle.getString("[Login]")%>" /> 
  <input type="password" name="pwd" id="authpass" value="" tabindex="2"  title="<%=bundle.getString("[Password]")%>" />
  <input type="submit" name="enter" value="<%=bundle.getString("[Enter]")%>" class="proaction" tabindex="3" title="<%=bundle.getString("[Enter]")%>" />
</form>

Я сохраняю параметры в своем jsp-файле:

<%if (request.getContentLength() == 0) { .[IE6,7 goes here]. } else { .[Chrome and FireFox goes here]. } %>

Как вы видите, у меня проблема с сохранением параметров публикации, опубликованных в IE6,7.В Chrome и FireFox все работает отлично.Я использую Apache Tomcat, и файл журнала не содержит ошибок в обоих случаях.

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 23 августа 2010

Тогда я не уверен, возможно, попробуйте тестовую страницу на вашем производственном сервере без request.getContentLength () .. добавьте страницу с:

<%@page contentType="text/html" pageEncoding="UTF-8" import="java.io.*, java.util.*"%>

// adapted from: http://www.java2s.com/Code/Java/JSP/Printtherequestheadersandthesessionattributes.htm
   Enumeration enames = request.getHeaderNames();
   Enumeration pnames = request.getParameterNames();
   Map map = new TreeMap();

   while (enames.hasMoreElements()) {
      String name = (String) enames.nextElement();
      String value = request.getHeader(name);
      map.put(name, value);
   }
   while(pnames.hasMoreElements()) {
      String name = (String) pnames.nextElement();
      String value = request.getParameter(name);
      map.put(name, value);
    }

    out.println(createTable(map, "Request Headers"));

С:

   private static String createTable(Map map, String title)
  {
  StringBuffer sb = new StringBuffer();

  // Generate the header lines

  sb.append("<table border='1' cellpadding='3'>");
  sb.append("<tr>");
  sb.append("<th colspan='2'>");
  sb.append(title);
  sb.append("</th>");
  sb.append("</tr>");

  // Generate the table rows

  Iterator imap = map.entrySet().iterator();
  while (imap.hasNext()) {
     Map.Entry entry = (Map.Entry) imap.next();
     String key = (String) entry.getKey();
     String value = (String) entry.getValue();
     sb.append("<tr>");
     sb.append("<td>");
     sb.append(key);
     sb.append("</td>");
     sb.append("<td>");
     sb.append(value);
     sb.append("</td>");
     sb.append("</tr>");
  }

  // Generate the footer lines

  sb.append("</table><p></p>");

  // Return the generated HTML

  return sb.toString();

}

Чтобы узнать, какие заголовки возвращает рабочий сервер.

0 голосов
/ 23 августа 2010

Я только что попробовал это и не смог повторить проблему (я тестировал в FF4 Beta, IE6 и IE8):

    <% out.print("Content Length: " + request.getContentLength());%>
    <h1>Content Length Test</h1>

    <form action="test.jsp" method="post">
      <input type="text" id="authname" name="login" value="a" tabindex="1" title="" />
      <input type="password" name="pwd" id="authpass" value="b" tabindex="2"  title="" />
      <input type="submit" name="enter" value="b" class="proaction" tabindex="3" title="" />
    </form>

Можете ли вы попробовать:

<%if (request.getContentLength() > 0) { .. } else { .[Chrome and FireFox goes here], [IE6,7 should go here]. } %>

Примечание: Iтакже только что протестировано в Chrome .. все дескрипторы браузеров возвращают одно и то же значение в request.getContentLength () .. вы уверены, что вызываете функцию getContentLength для relogin.jsp?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...