[Servlets] Problem mit Formular

Kerwin

Erfahrenes Mitglied
Hallo,

ich habe da ein kleines Problem mit einer Formularauswertung.
Ich habe ein Eingabefeld und 2 Schaltflächen(Sparbuch und Girokonto). Wenn ich nun einen Betrag in das Eingabefeld eingebe und auf Girokonto drücke, soll der Betrag auch dort gutgeschrieben werden(Ausgabe).
Nur leider kann ich irgendwie nicht prüfen auf welchen Knopf gedrückt wurde.
Wenn ich mir die Variable request.getParameter("buchen") ausgeben lasse, steht da entweder Girokonto oder Sparbuch, so wie es ja auch sein soll. Will ich aber das in den IF zweig einbauen, so springt er immer in den Elsezweig(eigentlich brauch da kein Elsezweig hin, aber war zum debuggen gedacht) was ich irgendwie nicht verstehen kann.

Code:
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        String bet = request.getParameter("betrag");
        String sb = "0";
        String gk = "0"; 
        
        if(request.getParameter("buchen")=="Sparbuch"){
            sb=bet;
        }else{
            sb=request.getParameter("buchen");
        }
        
        if(request.getParameter("buchen")=="Girokonto"){
            gk=bet;
        }else{
            gk=request.getParameter("buchen");
        }
        
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<HTML>" +
                      "<HEAD>" +
                        "<TITLE>Servlet</TITLE>" +
                      "</HEAD>" +
                      "<BODY>" +
                        "<TABLE cellspacing=\"1\" cellpadding=\"0\">" +
                          "<TR>" +
                            "<TD>" + 
                              "<FORM action=\"KontoGUI\" method=POST>"+
                                "<INPUT type=\"text\" size=\"20\" name=\"betrag\"><br>" + 
                                "<INPUT type=\"submit\" name=\"buchen\" value=\"Sparbuch\">"+
                                "<INPUT type=\"submit\" name=\"buchen\" value=\"Girokonto\">"+
                              "</FORM>"+
                            "</TD>"+
                          "</TR>"+
                          "<TR>" +
                            "<TD>" +
                              "Sparbuch : " + sb +
                            "</TD" +
                          "</TR>" +
                          "<TR>" +
                            "<TD>" +
                              "Girokonto : " + gk +
                            "</TD" +
                          "</TR>" +
                        "</TABLE>" +
                      "</BODY>");
        out.println("</HTML>");        
        out.close();
    }

Ich hoffe man kann mein Problem ein wenig verstehen und mir auch weiterhelfen.

Thx im vorraus
 
Hallo,

Verwende bitte nicht == als inhaltlichen Vergleich von Objekten, das funktioniert nicht.

Verwende die .equals - funktion. (ist in jedem Objekt zu finden, da es von der Klasse Objekt abgeleitet ist!)

String test1="test";
String test2="test2";

if (test1.equals(test2)) system.out.println("Gleich");
else system.out.println("nicht gleich");

-->nicht gleich


String test1="test";
String test2="test";

if (test1.equals(test2)) system.out.println("Gleich");
else system.out.println("nicht gleich");


--> gleich.


String test1="test";
String test2="test";

if (test1==test2) system.out.println("Gleich");
else system.out.println("nicht gleich");

--> nicht gleich
Dein Problem ist wirklich das du mit == prüfst, bei Strings verwendet man aber die equals funktion zum überprüfen ob 2 Strings gleich sind. Es liegt daran, dass der == operator nur die referenzen überprüft, aber nicht den Inhalt. Dies ist generell in Java so. Wenn du also auf inhaltliche und referentielle gleichheit testen willst immer mit Equals. Referentielle nur mit ==.


Hier eine schöne Definition die ich gefunden habe:

http://www.hartlage.de:8080/eclipse/space/java/faq_dclj/string

bevor ich es selbst noch ausformulieren müsste ....

;)

Viel Erfolg!

Grüsse

Torsten.
 
Zuletzt bearbeitet:
super, hat mir weitergeholfen, glaube das ich das Verstanden habe ;)

bix thx


nochmal zur Info wie ich das jetzt gemacht habe
Code:
        String bet = request.getParameter("betrag");
        String sb = "0";
        String gk = "0"; 
        
        if(request.getParameter("buchen") != null) {
          if(request.getParameter("buchen").equals("Sparbuch")){
            sb=bet;
          }        
          if(request.getParameter("buchen").equals("Girokonto")){
            gk=bet;
          }
        }
 
Zurück