2010-08-23 4 views
1

J'ai à côté de:JSP getParameter (problème IE)

<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> 

Je maintiens les paramètres dans mon fichier jsp:

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

Comme vous pouvez le voir, j'ai un problème pour maintenir les paramètres post formulaire posté IE6,7. Dans Chrome et FireFox, tout fonctionne correctement. J'utilise Apache Tomcat et le fichier journal ne contient aucune erreur dans les deux cas.

Des suggestions?

+0

Je localise mon problème. Je déploie ma page sur mon propre ordinateur (Ubuntu 10.04, JVM 1.6.0_20, Apache Tomcat 6.0.28) et tout fonctionne bien. Ensuite, je copie mon Tomcat avec la page de test au serveur productif (Windows Server 2003, JVM 1.6.0_20, Apache Tomcat 6.0.28) et j'ai le problème mentionné ci-dessus. –

+0

Je cours la page en mode debug. J'ai vu que 'request.postdata' contient des valeurs, mais finalement elles ne sont pas analysées. –

Répondre

0

Je ne suis pas sûr alors, peut-être essayer une page de test sur votre serveur de production sans request.getContentLength() .. ajouter une page avec:

<%@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")); 

Avec:

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(); 

}

Pour voir les en-têtes renvoyés par le serveur de production.

+0

Chrome: accepter \t application/xml, application/xhtml + xml, text/html; q = 0.9, text/plain; q = 0,8, l'image/jpeg, */*; q = 0,5 accept-charset \t windows-1251, utf-8; q = 0,7, *; q = 0,3 accept-encoding \t gzip, deflate, sdch accept-language \t ru-RU, ru; q = 0.8, en-US; q = 0.6, en; q = 0,4 cache-control \t max-age = 0 connexion \t keep-alive contenu longueur -type de contenu \t application/x-www-form- codé en cookie \t ITEMS_PER_PAGE = 10; selectedLocale = ru; JSESSIONID = 131935136616541FC92889E4E2C38116 entrer \t b connexion \t AASF PWD \t BASF –

+0

IE: acceptent image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, \ */\ * Accept-Encoding gzip , dégonfler accepter en langue ru autorisation NTLM TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFAs4OAAAAD2 == cache-control no-cache connexion Keep-Alive contenu longueur 0 application type de contenu/x-www-form-urlencoded biscuit JSESSIONID = 65314A008A7B82B5DD33BE6939CA0D23 –

+0

Avez-vous un serveur proxy configuré dans IE? (Je demande parce que l'autorisation NTLM). Peut-être que cela cause le problème? – user406632

0

Je viens essayé et n'a pas pu reproduire le problème (je l'ai testé dans FF4 Beta, IE6 et 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> 

Pouvez-vous essayer:

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

Note: Je viens aussi testé dans Chrome .. tous les navigateurs gèrent la même valeur dans request.getContentLength() .. Êtes-vous sûr d'appeler la fonction getContentLength sur relogin.jsp?

+0

J'ai utilisé votre exemple et j'ai toujours le même problème. Il affiche "Content Length: 0" dans IE 6,7 et les valeurs> 0 dans FF et Chrome. Voici par exemple je: \t \t \t \t \t [votre exemple] –

+0

Hmmm ... je déployer cette jsp à tomcat sur vous ordinateur et tout fonctionne bien, comme vous l'avez dit. La configuration de production est la suivante: serveur Win 2003 SP1, Apache Tomcat 5.5.20, JVM 1.6.0_20. Je pense que j'ai quelques problèmes avec Tomcat. Des idées? –

+0

Quelle configuration (OS, JVM, Tomcat) avez-vous? –