Gå til innhold

JSP og string-problemer


Anbefalte innlegg

Sliter litt med JSP her. Skal få koden i løkken til å kjøre hvis det er skrevet inn noe, og selvsagt ikke kjøre hvis det ikke blir sendt inn noen verdier. Jeg har skjema til å skrive inn verdier øverst på siden, så første gang man laster siden vil strengene være tomme. Er det ikke rett slik det står?

 

Tengte også å legge inn en try/catch slik at Double.parseDouble ikke lager krøll hvis det er tegn som ikke hører hjemme som blir tastet inn av brukeren, men fikk ikke det til heller. Flott hvis noen finner ut av dette også.

 

Fant ikke noe JSP-forumdel, så poster det her under Java i god tro.

 

<%
String side1string = request.getParameter( "side1" );
String side2string = request.getParameter( "side2" );

if (side1string != "" && side2string != "") {    	
 double side1 = Double.parseDouble( side1string );
 double side2 = Double.parseDouble( side2string );
 
 double areal = arealutrekning(side1,side2);
 
 out.println("<p>Arealet av rektangelet er " + side1*side2 + "</p>");
}
 
else {
 out.println("<p>Du må skrive inn verdier</p>");
}



%>

Lenke til kommentar
Videoannonse
Annonse

prøv med:

 

if(side1string != null && side2string != null)

 

i java får string variable verdien null (ikke som i "null", null er en egen javaverdi. Forteller vel at variablen ikke viser til noen verdi), med en gang de initialiseres.

Endret av MaxTiger
Lenke til kommentar

Prøvd det også, men uten resultat.

 

Er det ikke bare checkboxes og radiobuttons som får verdien null? Trodde String får "" når det ikke er noe i den (temmelig sikker, da det har fungert å bruke lik "" tidligere (prøvde først med null, men det funket ikke)).

 

Kom på at man må bruke .equals når det er string, men får fortsatt feil:

 

if ((side1string) .equals ("") || (side2string) .equals ("")) {    	
 out.println("<p>Du må skrive inn verdier</p>");
 
}
 
else {
 double side1 = Double.parseDouble( side1string );
 double side2 = Double.parseDouble( side2string );
 
 double areal = arealutrekning(side1,side2);
   
 out.println("<p>Arealet av rektangelet er " + side1*side2 + "</p>");
}

Lenke til kommentar

Løsningen på problemet er ganske enkel.

 

- sjekk om variabelen ikke er null, og om den ikke er tom:

 

<%
String side1string = request.getParameter( "side1" );
String side2string = request.getParameter( "side2" );

if ((side1string != null && !side1string.equals("")) && (side2string != null && !side2string.equals("")) 
{     
double side1 = Double.parseDouble( side1string );
double side2 = Double.parseDouble( side2string );

double areal = arealutrekning(side1,side2);

out.println("<p>Arealet av rektangelet er " + side1*side2 + "</p>");
}

else {
out.println("<p>Du må skrive inn verdier</p>");
}

%>

 

Du trenger strengt tatt ikke de ekstra parantesene i if-setningen, men jeg legger dem alltid til ettersom jeg synes det blir ryddigere og enklere å lese.

 

Som du nevner, første gang du kjører siden er strengene både NULL og tomme, så du må forsikre deg at du sjekker om den er null _før_ du sjekker verdien, ellers får du en java.lang.NullPointerException.

 

Kan i tillegg lønne seg å ha en Try/Catch blokk rundt Double.parseDouble() og, som nevt tidligere. DU sjekker da for NumberFormatException

Lenke til kommentar
Kan ikke Java jeg. Holder på med JSP på skolen, og hverken jeg eller stud.ass har noen løsning på problemet. Derfor prøver jeg meg her. Kompilerer ikke programmet, da dette er snakk om JSP (Java Server Pages), og ikke Java.

Ganske skremmende at Stud.Ass i faget ikke hadde en løsning på problemet her, må en si. Er ganske sikker på at dette er "JSP101" :)

 

For å klargjøre diskusjonen over:

 

JSP (JavaServer Pages) er et kompilert programmerings-språk for web. JSP filer består av HTML kode med enkelte java-kode seksjoner. JSP siden kompileres av Web-serveren (Tomcat, JBoss, osv) til en Servlet, og det er denne Servlet'en som kjører når filnavn.jsp kalles i nettleseren. Når det er sakt, er det mulig å forhånds-kompilere JSP filer med javac.

Lenke til kommentar

Det er lurt å bruke

"".equals(variabel)

istedenfor

variabel.equals("")

for å unngå nullpointerexceptions ü

 

<%
String side1string = request.getParameter( "side1" );
String side2string = request.getParameter( "side2" );

if (side1 != null && side2 != null) if (!("".equals(side1) || "".equals(side2) ) ) {    
double side1 = Double.parseDouble( side1string );
double side2 = Double.parseDouble( side2string );

double areal = arealutrekning(side1,side2);

out.println("<p>Arealet av rektangelet er " + side1*side2 + "</p>");
}

else {
out.println("<p>Du må skrive inn verdier</p>");
}



%>

Lenke til kommentar
  • 1 måned senere...

Takk for hjelpen. Lenge siden dette, men bedre sent enn aldri :)

 

Har et lite spørsmål til:

 

i siden med forms har jeg dette feltet:

<input type="text" name="side1" />

 

Hvis man ikke skriver noe i tekstboksen, vil den ikke da få verdien "" (tom) og ikke NULL? Derfor jeg syntes det var litt rart å sjekke for både "" og NULL.

 

Er IT-grunnkurs det er snakk om :)

Endret av Nostradamus
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...