Avatar billede touel Nybegynder
06. december 2005 - 15:04 Der er 21 kommentarer og
1 løsning

Problem med if løkke i JSP

Hey... I følgende kode kan jeg ikke forstå hvorfor den hele tiden går ind i if løkken og udskriver den og ikke ind i else som jeg forventer....
---------------------------------------------------------
<body>
  <FORM method="POST" action="OpretKunde.jsp"> <BR>
  Navn
  <INPUT type="text" name="navn" size="25" value=""> <BR>
  Adresse
  <INPUT type="text" name="adresse" size="25" value=""> <BR>
  Postnr
  <INPUT type="text" name="postnr" size="10" value=""><BR>
  By
  <INPUT type="text" name="by" size="25" value=""><BR>
  Telefon
  <INPUT type="text" name="telefon" size="25" value=""><BR>
  Email
  <INPUT type="text" name="email" size="25" value=""> <br>
 
  <INPUT type="submit" name="Send" value="Opret">
  <INPUT type="reset" name="Nulstil" value="Clear">
 
  </FORM>
  </body>
------------------------------------------------------------
OpretKunde.jsp

<body>
  <%
  String navn = request.getParameter("navn");
  String adresse = request.getParameter("adresse");
  String postnr = request.getParameter("postnr");
  String by = request.getParameter("by");
  String telefon = request.getParameter("telefon");
  String email = request.getParameter("email");
 

    if (navn != null && adresse != null  && postnr != null && by != null && telefon != null && email != null)
  { %>
        Du oprettes som kunde med følgende data :
        <BR>
          <%=navn%> <BR>
        <%=adresse%> <BR>
        <%=postnr%> <BR>
          <%=by%><BR>
          <%=telefon%> <BR>
          <%=email%><br>
 
  <%}
    else
    {%>
      Du er IKKE oprettet som kunde
     
      <BR>
          <%=navn%> <BR>
        <%=adresse%> <BR>
        <%=postnr%> <BR>
          <%=by%><BR>
          <%=telefon%> <BR>
          <%=email%><br>
 
  <%}
 
  %>

  </body>
Avatar billede erikjacobsen Ekspert
06. december 2005 - 15:05 #1
du skal teste på den tomme streng i steder for null.
Avatar billede touel Nybegynder
06. december 2005 - 15:07 #2
du mener if (navn == "" && adresse== "" etc....)
Avatar billede erikjacobsen Ekspert
06. december 2005 - 15:10 #3
Sådan sammenligner man jo ikke i Java. Husk at bruge .equals.  Udover at teste for den tomme streng, kan du også teste for null, hvis man kommer ind på Opretkunde.jsp uden at komme fra din form.
Avatar billede touel Nybegynder
06. december 2005 - 15:16 #4
Erik, jeg prøvede bare for sjov at sætte dem til "" istedet for null, og nu hopper den rigtig mellem if og else løkken. Hvis jeg undlader at udfylde nogel af felterne øverst så går den ned til else... så det virker åbenbart nu !?!??!
Avatar billede touel Nybegynder
06. december 2005 - 15:32 #5
og du samlede ikke på point ???
Avatar billede erikjacobsen Ekspert
06. december 2005 - 15:52 #6
navn == ""  virker ikke. Det kan være det ser ud til at virke. Du skal bruge .equals
Avatar billede touel Nybegynder
06. december 2005 - 17:56 #7
bare for at være på den sikre side erik... jeg er ikke ved min egen computer pt, men det burde gå an hvis man skrev navn.equals(navn) etc.
Avatar billede touel Nybegynder
06. december 2005 - 22:11 #8
så har jeg også lige prøvet med .equals() metoden. Samme problem.

Som jeg har skrevet foroven, så kan jeg kun se at der skal stå navn.equals(navn) etc. Ret mig, hvis jeg tager fejl!
Avatar billede erikjacobsen Ekspert
06. december 2005 - 22:24 #9
navn.equals(navn) giver vel ingen mening. Du prøver vel med navn.equals("")
Avatar billede touel Nybegynder
06. december 2005 - 22:35 #10
Nob erik. Det er meningen at når alle felter er fyldt ud, så skal den ind i if løkken og skrive at man er blevet oprettet, hvis nogen er felterne ikke udfyldes, så skal den ind i else og skrive at man ikke er bleveet oprettet.

Jeg har lige prøvet med navn.equals(""), og selvom alle felter er udfyldte, så går den stadig ned i else og skriver at man oprettes ikke.
Avatar billede erikjacobsen Ekspert
06. december 2005 - 22:37 #11
Så må du jo anvende det forkert.
Avatar billede touel Nybegynder
06. december 2005 - 22:39 #12
det eneste jeg ændret i koden som du kan se øverst er

if (navn.equals("") && adresse.equals("") && postnr.equals("") osv.)

Resten af koden er ikke blevet ændret
Avatar billede erikjacobsen Ekspert
06. december 2005 - 22:45 #13
Før testede du for om det var forskelligt fra "ingenting" - det er noget andet du spørger om nu. Men vis lige koden, så vi ikke bare skal gætte.
Avatar billede touel Nybegynder
06. december 2005 - 22:49 #14
jeg har kun det kode som ses helt øverst. Jeg ville lave det sådan at hvis alle felter er udfyldte, så skal den nede i OpretKunde.jsp, komme med beskeden om at man er oprettet som kunde og udskrive informationerne. Hvis man ex ikke skriver telefon og by, så skal den ned i else og skrive at man ikke oprettes...

That's it !
Avatar billede erikjacobsen Ekspert
06. december 2005 - 22:52 #15
Men vis lige koden, så vi ikke bare skal gætte.
Avatar billede touel Nybegynder
06. december 2005 - 22:55 #16
Det du lige har skrevet om at jeg testede for om det var forskelligt fra "ingenting", der var det meningen at den skulle teste, at hvis navn bliver tildelt en værdi fra request.getParameter("navn"), så hvis navn != null, dvs hvis navn ikke indeholder noget så er den falsk, hvis den er true, fortsætter den videre med adresse osv.
Avatar billede touel Nybegynder
06. december 2005 - 22:56 #17
Kunde.jsp
------------------------------------------------------------
<body>
  <FORM method="POST" action="OpretKunde.jsp"> <BR>
  Navn
  <INPUT type="text" name="navn" size="25" value=""> <BR>
  Adresse
  <INPUT type="text" name="adresse" size="25" value=""> <BR>
  Postnr
  <INPUT type="text" name="postnr" size="10" value=""><BR>
  By
  <INPUT type="text" name="by" size="25" value=""><BR>
  Telefon
  <INPUT type="text" name="telefon" size="25" value=""><BR>
  Email
  <INPUT type="text" name="email" size="25" value=""> <br>
 
  <INPUT type="submit" name="Send" value="Opret">
  <INPUT type="reset" name="Nulstil" value="Clear">
 
  </FORM>
  </body>
---------------------------------------------------------
OpretKunde.jsp
---------------------------------------------------------
<body>
  <%
  String navn = request.getParameter("navn");
  String adresse = request.getParameter("adresse");
  String postnr = request.getParameter("postnr");
  String by = request.getParameter("by");
  String telefon = request.getParameter("telefon");
  String email = request.getParameter("email");

     
    if (navn.equals("")  && adresse.equals("")  && postnr.equals("") &&
    by.equals("")&& telefon.equals("") && email.equals(""))
  { %>
        Du oprettes som kunde med følgende data :
        <BR>
          <%=navn%> <BR>
        <%=adresse%> <BR>
        <%=postnr%> <BR>
          <%=by%><BR>
          <%=telefon%> <BR>
          <%=email%><br>
 
  <%}
    else
    {%>
      Du er IKKE oprettet som kunde
     
      <BR>
          <%=navn%> <BR>
        <%=adresse%> <BR>
        <%=postnr%> <BR>
          <%=by%><BR>
          <%=telefon%> <BR>
          <%=email%><br>
 
  <%}
 
  %>

 
  </body>
Avatar billede erikjacobsen Ekspert
06. december 2005 - 23:04 #18
Du skal blot negere

    if (!navn.equals("")  && !adresse.equals("")  && !postnr.equals("") &&
    !by.equals("")&& !telefon.equals("") && !email.equals(""))

så det svarer til != og ikke ==
Avatar billede touel Nybegynder
06. december 2005 - 23:09 #19
arrhh... Hvordan kunne du se det erik... jeg har siddet og vendt det på hovedet for at få det til at virke... lille teoretisk forklaring og et svar tak, hvis du samler på point


Og MANGE TAK FOR HJÆLPEN !
Avatar billede erikjacobsen Ekspert
06. december 2005 - 23:14 #20
Jeg samler slet ikke på point, tak. Men lige et PS:

Hvis der ikke er et felt i din form, der hedder "ZZZ", vil request.getParameter("ZZZ") være null. Ellers vil det være en ikke-null streng. Kommer du til siden fra et andet sted, fx taster den direkte ind i browseren, vil du nu få en null-pointer exception.

Tænk over det en anden gang - du skal vel videre!
Avatar billede touel Nybegynder
06. december 2005 - 23:18 #21
og det kan jeg undgå ved at lave en try-catch og fange så nullpointer exception ???
Avatar billede touel Nybegynder
06. december 2005 - 23:40 #22
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester