request.getParameter("name") von Formular auf JSP-Seite leer

Status
Nicht offen für weitere Antworten.
Hallo,

ich arbeite an einer web-anwendung, die Nutzereingaben in eine Datenbank speichert. Ich arbeite mit der Model-View-Controller-Architektur.

Hier ist der Ablauf der internen file-Aufrufe:
html-seite mit formular zum login
-> javaservlet (controller1), das login testet und daten aus der datenbank holt, die für im nächsten formular dargestellt werden (daten werden mithilfe einer anderen java-klasse(model) geholt)
->jsp-seite, die geholte Informationen in einem formular darstellt
-> javaservlet (controller2), das formulardaten auswerten soll

Das zweite Formular wird also dynamisch erstellt, z.B. wird der Inhalt von <select>-Scrollboxen mit Inhalt der Datenbank gefüllt.

Mein Problem ist, dass im javaservlet (controller2)die Methode request.getParameter("elementName") null und nicht den Wert des input-text elements mit dem namen "elementName" zurücktgibt.

Hat jemand eine Idee, woran das liegen könnte? Warum werden die Werte nicht im request gespeichert? request ist übrigens nicht null und enthält auch header-Informationen.

Über Hilfe würde ich mich sehr freuen :)
 
also ich denke, ich habe alles ausprobiert und das problem muss in dem request-objekt liegen...
dem request werden beim ausfüllen des formulars überhaupt keine parameter zugewiesen.
es muss sich um ein neues request-objekt handeln, als das was vom ersten formular erzeugt wurde.
anscheinend ist es ein problem für eine jsp-seite, die schon einen request erhalten hat, einen (anderen oder meinetwegen auch den gleichen) request "abzusenden".
ich verstehe nicht warum.

hat denn niemand eine idee??
???:L
 
Das ist eine methode aus dem ersten servlet, die das dispatchen auf die jsp vornimmt.

Java:
protected void processRequestAndDispatch(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       
	if(con == null){
            connectionBD();
        }
        
        getModeleImportData(request);
        String login = request.getParameter("login");
        String pw = request.getParameter("pw");
        int user_id;
        if (login != null && mdp != null){
            try {
                user_id = modele.checkUser(con, login, mdp);
                //if user doesn't exist
                if (user_id == 0){
                    getServletContext().getRequestDispatcher("/HTML/UserNotFound.html").forward(request, response);
                } else {
                    
                    request.setAttribute("user_id", user_id);
		    //im Model werden Informationen aus der Tabelle Autor geholt, um sie dann auf der JSP in einer Auswahlbox darzustellen
                    modele.rechercheAutor(con);
                   
                    getServletContext().getRequestDispatcher("/JSP/getInfoFromDB.jsp").forward(request, response);

                }
            } catch (SQLException ex) {
                Logger.getLogger(ControleurImportDonneesLogin.class.getName()).log(Level.SEVERE, null, ex);
            }
        

        try {
        if (con != null)
            con.close();
            con = null;
        } catch (SQLException ex) {
            Logger.getLogger(ControleurImportDonneesLogin.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
Das weiterleiten auf die richtige Seite (UserNnotFound.html oder getInfoFromDB.jsp) funktioniert. Das darstellen der Autorenliste funktioniert auch.
Hier ist der form-abschnitt aus der getInfoFromDB.jsp, in der sich auch eine java-partie befindent, dich sich um das darstellen der autorenliste kümmert, und eine javascipt-funktion zum überprüfen des formulars und noch mehr input-elemente:
Java:
<form action="../ControleurImportDonneesGetData" method="post">

        <table>
            <tr><td>*Solution hybridation:</td><td><input type="text" name="solHybrid" id="solHybrid"></td></tr>
            <tr><td>*Temperature:</td><td><input type="text" name="tempHybrid"></td></tr>
            <tr><td>*Duree:</td><td><input type="text" name="dureeHybrid"></td></tr>
        </table>

	<input type="submit" value="Transmission">
</form>
und hier ist die methode des zweiten servlets ControleurImportDonneesGetData, die von doGet() und doPost() aufgerufen wird.

Java:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException, SQLException {
        if(con == null){
            connectionBD();
        }

        if(request.getParameter("solHybrid") == null){
            System.out.println("solHybrid null ");
        }else{
            System.out.println("solHybrid: "+request.getParameter("solHybrid"));
        }
        
        try {
        if (con != null)
            con.close();
            con = null;
        } catch (SQLException ex) {
            Logger.getLogger(ControleurImportDonneesGetData.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

request.getParameter("solHybrid") ist null. Warum ???:L
 
habe jetzt eine lösung für das problem gefunden :)
habe eine zwischenseite eingebaut, auf der sich ein link zu getInfoFromDB.jsp befindet. so habe ich eine "requestfreie" seite mittendrin, die anscheinend dafür sorgt, dass der request für das nächste formular richtig erstellt werden kann und auch wieder parameter speichert.
falls es eine elegantere lösung für dieses problem gibt, lasst es mich wissen!
 

HLX

Top Contributor
Normalerweise sollte eine Zwischenseite nicht nötig sein.

In deinem Code ist mir leider nichts aufgefallen, was zu diesem Verhalten führen könnte. Vielleicht ist im übrigen Code irgendwas versteckt, möglicherweise in den JSP- oder JS-Skripten.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
7 kein Absatz mittels request.getParameter()?? Web Tier 8
ruutaiokwu request.getParameter() Web Tier 3
E Problem mit request.getParameter Web Tier 5
E Java Servlet doPost request, Mehrere Parameter mit demselben Namen aus Tabellenzeilen Web Tier 2
M XML http request zeigt die eigene Website als response Web Tier 2
jann Servlet Bei jedem Request wird eine neue Session erstellt. Web Tier 6
M request.getUserPrincipal() Typecasting Web Tier 1
BuckRogers JPA Datenbankabfrage bei jedem Request?! Web Tier 6
S JSF CommandButton soll keine Request starten! Web Tier 2
X Managed Bean Scope zwischen Request und Session gesucht Web Tier 6
S JSF Request länger haltbar machen *grins* oder injection.. Web Tier 6
lukas24680 Servlet pro Request Web Tier 2
borobudur Servlet Business-Logik wird bei jedem Request neu erstellt Web Tier 13
S Ajax Request verhindert forward? Web Tier 8
J Request weiterleiten Web Tier 6
K Struts request Zugriff Web Tier 4
I Beim zurück-Link wird immer ein Request ausgeführt Web Tier 5
F Problem mit der Methode request.getRemotePort() Web Tier 2
F Object Request Web Tier 6
L Umlaute von Formular mit request holen Web Tier 16
P Rausfinden, wo request herkam Web Tier 4
R Request Parameter kopieren und setzen Web Tier 3
S Per HTTP Request auf Ressourcen innerhalb eines JARs zugreif Web Tier 4
L JSF Request Scope und createValueBinding() Web Tier 1
D request.contextPath in Java-Klasse ausführen Web Tier 5
F richfaches:datascroller mit request-scope Web Tier 6
F JSF: Beans in Session oder Request? Web Tier 4
R getParameter() liefert null Web Tier 6
T getParameter("id") = null - warum? Web Tier 8
V Name und Pfad der Datei in JSF Web Tier 0
L JSF, no tag was defined for name: html Web Tier 5
D Tomcat/Struts2 Benutzer bestimmt Name der URL Web Tier 2
P JSF Textarea Name herausfinden Web Tier 2
reibi Servlet Tomcat : Display name und version setzen Web Tier 3
O struts2: iterator status in name-Feld benutzen Web Tier 7
S JSF: Name des Formulars auslesen Web Tier 4
U JSP form-Daten (ohne name-Attribut) an Servlet = Problem Web Tier 6

Ähnliche Java Themen

Neue Themen


Oben