Avatar billede gorlist Nybegynder
10. december 2001 - 21:37 Der er 17 kommentarer og
1 løsning

if - else med kald på samme .jsp side

Min form og udførelse af kaldet ligger på samme .jsp. Jeg har lavet et usynligt felt for at se om kaldet kommer fra formen, men kan ikke rigtig få det til at virke.

*********************************
<%@ page language=\'java\' %>
<%@ page import=\"java.sql.*\"%>
<%@ page import=\"liste1.*\"%>

<jsp:useBean id=\"l\" class= \"Liste\" /> <!-- Vis den bønne som skal bruges -->

<html>
<head>
<title>Kundekartotek</title>
</head>
<body>

<p align=\"center\"><font size=\"7\">Kundekartotek</font> <!-- Opret form med 3 input felter og 1 submit knap -->
<form method=\"POST\" action=\"index.jsp\">
  <input type=\"text\" value=\"\" name=\"editnr\" size=\"20\" ><br>
  <input type=\"text\" value=\"\" name=\"editnavn\" size=\"20\"><br>
  <input type=\"text\" value=\"\" name=\"edittelefon\" size=\"20\"><br>
  <input type=\"hidden\" name=\"check\" value=\"yes\">
  <input type=\"submit\" value=\"Søg\" name=\"buttonnummer\"></p>
</form>

<p align=\"center\"><table border=1 cellpadding=0 cellspacing=0> <!-- Opret table -->
<tr> <td> Nummer </td>
    <td> Navn </td>
    <td> Telefon </td>
</tr>
<%
  String check = request.getParameter(\"check\");
  if (check==\"yes\"){                    //foretag check for om kaldet kommer fra formen
  String Knr = request.getParameter(\"editnr\");      //træk attributterne ud
  String Kn = request.getParameter(\"editnavn\");
  String Kt = request.getParameter(\"edittelefon\");
  String sql =\"select * from Kunde where nummer =\'\"+Knr+\"\' or navn like \'%\"+Kn+\"%\' or telefon = \'\"+Kt+\"\'\"; // sammensæt en query af attributterne
  l.åben(); // åben forbindelsen til databasen fra bønnen
  ResultSet rs = l.getrs(sql); //sæt rs til at være det resultset som kommer tilbage fra forespørgselen
while (rs.next()) {
  int n = rs.getInt(\"nummer\"); //indsæt attributterne i table
  String nr = rs.getString(\"navn\");
  String t = rs.getString(\"telefon\"); %>
  <tr>  <td> <%= nr %> </td>
        <td> <%= n %> </td>
        <td> <%= t %> </td>
  </tr>
<%}
l.luk(); //luk forbindelsen til databasen fra bønnen
}
else{ %><%= check %><%
}
%>
</table></p>
</body>
</html>

***************************
Hvis det skjulte felts value = yes skal det hele udføres. Det bliver desværre bare ikke udført, men værdien ER yes (sat til at udskrive den i else for at checke). Kan nogen se hvor det går galt?
Avatar billede erikjacobsen Ekspert
10. december 2001 - 21:40 #1
if (check.equals(\"yes\")){
Avatar billede gorlist Nybegynder
10. december 2001 - 21:53 #2
Så får jeg følgende:

java.lang.NullPointerException
    at _dpouls1._index__jsp._jspService(/dpouls1/index.jsp:29)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:74)
    at com.caucho.jsp.Page.subservice(Page.java:485)
    at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:176)
    at com.caucho.server.http.Invocation.service(Invocation.java:278)
    at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129)
    at com.caucho.server.http.ServletServer.serviceTop(ServletServer.java:847)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:213)
    at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
    at java.lang.Thread.run(Thread.java:484)

Linje 29 = if (ch.equals(\"yes\")){
Avatar billede erikjacobsen Ekspert
10. december 2001 - 21:56 #3
Ja, for hvis du kalder siden \"første gang\", hvor den ikke kommer fra
et tryk på en knap i en form, så er check null. Sådan skal det jo være.

Du kan snyde:

  if (\"yes\".equals(check)) { ... }
Avatar billede meo Nybegynder
10. december 2001 - 21:59 #4
Nå så du vælger at lave en søgning og resulttabel på samme side!! 
Så må du lukke den anden spørgsmål du har stillet!!!
http://www.eksperten.dk/spm/143728
Avatar billede gorlist Nybegynder
10. december 2001 - 21:59 #5
Tak for det! Men er det virkelig snyd hvis det løser problemet? ;)
Avatar billede meo Nybegynder
10. december 2001 - 22:01 #6
Erik!!
Det var jo også dig der foreslog ham det!! :)
Avatar billede erikjacobsen Ekspert
10. december 2001 - 22:01 #7
Hvad synes du - snyd eller smart ??
Avatar billede meo Nybegynder
10. december 2001 - 22:03 #8
Gorlist eller mig?
Det ligner jo php. Ikke noget galt i det!!
Avatar billede gorlist Nybegynder
10. december 2001 - 22:03 #9
SMAAART!!!! hehe
Avatar billede meo Nybegynder
10. december 2001 - 22:05 #10
Hey!! Gorlist, jeg mente ikke at du skulle give mig pointene hvis jeg ikke har fortjent dem!!

Du kunne have bedt erik om at afgive et svar hvis det skulle være til ham!!!
Avatar billede gorlist Nybegynder
10. december 2001 - 22:07 #11
meo>> Du gjorde kom med en løsning på mit spg., ergo fortjener du pointene. (desuden nægter Erik at tage points fra sine subjekter).
Avatar billede meo Nybegynder
10. december 2001 - 22:12 #12
Heheh,
Nægte er en overdrivelse, godt nok prøver han at hjælpe andre men man kan jo spørge ham om han ikke kunne afgive et svar istedet for en kommentar!!

//meo
Avatar billede erikjacobsen Ekspert
10. december 2001 - 22:14 #13
Nix - det er unfair at få point, når man som lærer hjælper sine studerende.
Avatar billede meo Nybegynder
10. december 2001 - 22:16 #14
Ahhh!! :o)

Ja men der er også en kæmpespring op til den næste på topscoren
Avatar billede meo Nybegynder
10. december 2001 - 22:19 #15
ErikJ, kender du noget til php og billedebehandling??
Avatar billede erikjacobsen Ekspert
10. december 2001 - 22:22 #16
Hvis du vil spørge om det, meo, så stil dit spørgsmål i PHP-kategorien.
Det hører ikke hjemme her.
Avatar billede meo Nybegynder
10. december 2001 - 22:23 #17
Nej nej, det er ikke det!! Jeg vil bare høre om man også haver det i JSP!!
Avatar billede disky Nybegynder
11. december 2001 - 08:41 #18
det der er \'snyd\' er at man gør tingene baglæns.

den \'pæne\' måde er at lave en:

if(check!=null && check.equals(\"yes\"))

istedet

Det andet virker også, men man skal passe på med ikke at lave sådanne små julelege da de kan forvire andre og gøre koden mindre læsbar.

Og da getParameter returnerer en null hvis parameteren ikke findes er det pænest at checke for null først.

Et tip glem sådanne små triks de hjælper ikke
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