Toon posts:

[JAVA] if-statements probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met het maken van een paar formulieren in Java/JSP.
Op het form kan men een aantal opties aanklikken. Afhankelijk van wat er gekozen word verschijnen er andere opties. Werkt allemaal prima. Ook het sturen van een e-mailtje werkt perfect.
Echter staan er in dat e-mailtje dan ook de opties die niet zijn ingevuld.
Wat ik dacht te doen is een simpel if statement te gaan gebruiken, wanneer iets dan bijv. niet is ingevuld dat deze regel dan ook niet in het mailtje terecht komt.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
String fname = request.getParameter("FName");
String lname = request.getParameter("LName");
String mt = request.getParameter("mergetype");
String rec1name = request.getParameter("record1no");

String email_text = "We have received a message from:\n\n";
email_text += "-----------------------\n";
email_text += "First Name: "+ fname + "\n";
email_text += "Last Name: " + lname +"\n";
email_text += "\n";
email_text += "Concerning: \n";
email_text += "-----------------------\n\n";
if (! mt.equals(""))
    {
email_text += "Merge Record Type: "+mt+"\n";
    }
else
email_text += "Master Record Number: "+rec1name+"\n";
email_text += "Master Record Name: "+request.getParameter("record1name")+"\n";


Dit werkt dus niet en krijg ik een http 500 melding van de webserver.
Het vreemde is dat dit wel werkt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
String fname = request.getParameter("FName");
String lname = request.getParameter("LName");
String mt = request.getParameter("mergetype");
String rec1name = request.getParameter("record1no");

String email_text = "We have received a message from:\n\n";
email_text += "-----------------------\n";
email_text += "First Name: "+ fname + "\n";
if (! lname.equals(""))
    {
email_text += "Last Name: " + lname +"\n";
    }
else
email_text += "\n";
email_text += "Concerning: \n";
email_text += "-----------------------\n\n";
email_text += "Merge Record Type: "+mt+"\n";
email_text += "Master Record Number: "+rec1name+"\n";
email_text += "Master Record Name: "+request.getParameter("record1name")+"\n";


Vreemd niet?
Wat ik ook heb geprobeerd is in het 1e code blok ipv if (! mt.equals("")) te vervangen door if (! lname.equals("")), dat werkt dus wel met het gene wat tussen de { } staat. Alleen kijkt ie dan dus naar de verkeerde parameter.
Het lijkt erop dat zodra ik in het if-statement iets anders gebruik dan de "lname" parameter het verhaal niet werkt. Heeft iemand enig idee waarom dat zou kunnen gebeuren?
Het is alleen maar text wat er op het forumulier word ingevuld.

Foutmelding van de webserver:

code:
1
2
3
Error 500--Internal Server Error 
java.lang.NullPointerException
    at jsp_servlet._index.__error._jspService(__error.java:186)

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 07-05 19:18

Robtimus

me Robtimus no like you

mt == null

Dus maak van die check
Java:
1
if (mt != null && !mt.equals(""))
of
Java:
1
if (mt != null && mt.length() > 0)
(in VB is mt.length() > 0 sneller dan mt = "", in Java volgens mij ook).

[ Voor 12% gewijzigd door Robtimus op 10-05-2005 11:46 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

of draai je check om: if (!"".equals(mt))

Daarnaast: bekijk P&W FAQ - Leer **** debuggen!! eens ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
-lama- de handleiding hierboven deed mij het licht zien. ;-)

[ Voor 71% gewijzigd door Verwijderd op 10-05-2005 12:35 ]


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 07-05 19:18

Robtimus

me Robtimus no like you

Creepy schreef op dinsdag 10 mei 2005 @ 11:50:
of draai je check om: if (!"".equals(mt))
Maar dan voegt hij ook een regel toe als mt == null, en dat was geloof ik niet de bedoeling. Kortom: checken op allebei.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Apie!
  • Registratie: Januari 2000
  • Laatst online: 09-03 19:55

Apie!

Newer, better & confusinger

En kijk eens naar de StringBuffer als je van plan bent zoveel string aan elkaar te plakken.

My lungs taste the air of Time
Blown past falling sands


Verwijderd

Topicstarter
Ik heb er toch nog een probleem mee, echter nu als ik op een waarde wil controleren.

code:
1
2
3
4
if (company.equals("waarde"))
{
  String email_cc = "user@company.nl";
}


Als ik geen if-statement gebruik dan word de e-mail gewoon netjes verzonden met daarin de juiste waardes, hij haalt het dus wel op en kan het ook invullen.
Blijkbaar vreet ie het dus alleen niet dat de string nu tussen blokken staat.
Een debug heb ik al laten draaien over mijn project met verschillende breakpoints erin en die geeft inderdaad netjes aan dat hij de waarde String email_cc mist. Maar waarom ie nou dat blok code niet uitvoert word niet aangegeven.
Iemand een vermoeden?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

Je declareert + initialiseert email_cc in je if. Hierdoor bestaat email_cc niet meer buiten je if. Declareer hem dus buiten je if.

Java:
1
2
3
4
5
String email_cc;
if (company.equals("waarde"))
{
  email_cc = "user@company.nl";
}

Zoiets dus.

Tip: dat heet scope ;)

Waarschijnlijk is je optimizer slim genoeg om te zien dat je een variabele declareert en niet meer gebruikt en daarom heel de IF overslaat.

[ Voor 21% gewijzigd door Creepy op 11-05-2005 09:30 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Hmmm ja logisch ook eigenlijk.
Bij al die andere if statements doe ik het ook zo.
Al doende leert men :)

Ik gebruik overigens Jbuilder 2005 & WLS 8.1SP4

Ik moest alleen de String op deze manier declareren:
String email_cc = "";

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

Tjah, mijn java is een beetje roestig ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1