# NullpointerException requestgetParameterValues



## struppi79 (2. Mrz 2011)

Hallo zusammen 
ich lerne gerade JSP / Java und finde einen Fehler nicht. Ist aber ein bisschen blöd hier 3 Seiten Programm text reinzukopieren .....
Ich habe in einer JSP Datei ein String Array names Artikel, das aber nach Übergabe und requestgetParameterValues nur als java.lang.NullPointerException ankommt, aber woran liegts???


----------



## Volvagia (2. Mrz 2011)

Vergesst es bitte einfach. 
Übrigens, meines Wissens nach ist hier niemand blind.


----------



## struppi79 (2. Mrz 2011)

ja nette Hilfe, was soll ich denn machen ? ich tu schon zwei Tage rum, wenn du so klug bist dann versuch doch mir zu helfen !


----------



## struppi79 (2. Mrz 2011)

Der Fehler tritt bem artikel.length auf in der letzten Zeile auf .. ....


```
<%@ page pageEncoding="UTF-8" import="java.io.*" %>
  
  <form action="Apotheke.jsp" method="post">
  <input type="submit" name="zurück" value="Zurück zum Bestellformular"/>
  <%
  String [] Artikel = request.getParameterValues ("artikel");
  String Station = request.getParameter ("station");
  String  menge1 = request.getParameter ("mengeneu");
  
  if (menge1.matches("[^0-9]")){
  out.print ("<h2>Sie haben ein ungültiges Zeichen eingegeben. <br/>Bitte korrigiern Sie die Eingabe</h2>");
  }else{
  
  String [] menge = request.getParameterValues ("mengeneu");
  
  out.print("<h1> Bestellung mehrerer Artikel:</h1>");
  out.print("<h3>Bestell&uumlbersicht</h3> <br/> <table border='1'><th>Abteilung </th><th>Bestellte Menge</th><th> Artikelnummer</th></tr>");
  out.print("<tr>"); 

		for (int i=0;i<Artikel.length; i++){
```


----------



## nrg (2. Mrz 2011)

ServletRequest (Java EE 6 )


> Returns an array of String objects containing all of the values the given request parameter has, *or null if the parameter does not exist.*


----------



## SlaterB (2. Mrz 2011)

nur an dieser JSP kann man doch kaum erkennen, ob und warum entsprechende Parameter vorhanden sein sollten,
was wurde denn vorher gesendet, gabs ein Formular, vielleicht netterweise als GET mit sichtbarer URL mit allen Parametern oder war es ein POST?
oder ist das die erste Seite noch ohne jegliche Parameter?


----------



## struppi79 (2. Mrz 2011)

Hm ja genau also das hier ist die vorherige Seite....
Meines Erachtens sollte Artikel schon existieren !
Hier funktioniert alles  (zumindest hier)

```
<%@ page pageEncoding="UTF-8" import="java.io.*" %>
  

  
  <form action="bestellung2.jsp" method="post">
  
  <%
  String menge = request.getParameter("anzahl");
  String station = request.getParameter ("Station");
  String [] artikel = request.getParameterValues ("Artikel");
  
  if (menge.matches("[^0-9]")){
	out.print ("<h2>Sie haben ein ungültiges Zeichen eingegeben. <br/>Bitte korrigiern Sie die Eingabe</h2>");
  }else{

  int test = Integer.parseInt(menge);
  
  out.print("<h2> Sie haben folgenden Artikel bestellt:</h2>");
  out.print("<h1 ul>Bestellübersicht</h1> <br/> <table border='1'><th>Abteilung </th><th>Bestellte Menge</th><th> Artikelnummer</th><th> Mengenkorrektur</th></tr>");
  out.print("<tr>"); 
  	if (artikel==null){ 
		out.print("<h3> Sie haben keinen Artikel ausgewählt! </h3> ");
		}else{
		for (int i=0; i<artikel.length; i++){ 
			if (test>0 && test<100 ){ 
			String bestellung = station +"  " +menge +" x " +artikel[i] +"\r\n"; 
			out.print("<tr> <td>" +station +"</td><td>"+menge +"</td><td>" +artikel[i]+"</td><td><input type='text' name='mengeneu' value='1' size='3' maxlength='3'/></td></tr>");
			final String DATEI="/var/www/intern/jspfiles/Bestellung_Aigner.txt";   //in csv-Datei schreiben
     
			FileWriter fw=new FileWriter(DATEI,true);
			BufferedWriter bw=new BufferedWriter(fw);
     
			bw.write(bestellung);
			bw.newLine();
     
			bw.close();
			fw.close();
			}
			else {
			out.print("<h3>"+"Bitte korrigieren Sie die Bestellmenge!"+"</h3>");
			}
		}
	}out.print("<h4>Bitte geben Sie f&uumlr eine Mehrfachbestellung jeweils die Artikelmenge ein und klicken Sie auf 'Weiter'</h4>"+"<br/>"+"<input type='submit' name='senden' value='Weiter'/>");
  }
	
   %>
</form>
```


----------



## SlaterB (2. Mrz 2011)

gibt es noch eine Seite vor dieser? eine wo erstmals 'Artikel' hinzukommen?
bzw. hier wird das Array ja auf == null geprüft, hast du zu irgendeinem Zeitpunkt in irgendeiner JSP das Array schon tatächlich mit Werten vorliegen oder funktioniert das bisher noch nirgendwo?

ich kann nicht genau erkennen wie das im Formular umgesetzt ist, kannst du dazu etwas erzählen?
kenne mich da aber aktuell auch nicht unbedingt perfekt aus, aber muss nicht irgendwo im HTML-Code die Buchstabenfolge 'artikel' auftauchen?
wie sieht eine solche HTML-Seite beim Client aus, poste ein Beispiel nur des HTMLs bitte?

---

ist dir übrigens bewußt, dass du mal 
> request.getParameterValues ("Artikel");
schreibst und mal
> request.getParameterValues ("artikel");
?

Variablen sollte man in Java immer klein schreiben, aber in unterschiedlichen Dateien egal,
für Parameternamen in HTML/ Request könnte so eine Unterscheidung ungleich wichtiger sein..


----------



## struppi79 (2. Mrz 2011)

hallo das ist die erste Seite, die DAten werden aus ner CSv Datei gelesen ... das funktioniert aber alles...


```
<html>
  <head>
    <title>Klinik Apotheke</title>
	<meta name="description" content="Bestellformular">
	<meta name="author" content="Rupert Aigner">
	<meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <h1>Medikamentenbestellung</h1>

   <body>
	<form action="bestellung.jsp" method="post">	
	Meine Station: <br/><br/>
	<select name="Station" size="1" >
	<option value="Notaufname">Notaufname</option>
	<option value="Innere Medizin">Innere Medizin </option>
	<option value="Chirurgie">Chirurgie</option>
	<option value="Palliativmedizin">Palliativmedizin</option>
	<option value="Neurochrirurgie">Neurochrirurgie</option>
	<option value="Allgemeinmedizin">Allgemeinmedizin</option>
	<option value="Intensivstation">Intensivstation</option>
	<option value="Augenheilkunde">Augenheilkunde</option>
	<option value="Neurologie">Neurologie</option>
	<option value="Orthop&aumldie">Orthop&aumldie </option>
	<option value="Kinder - und Jugendmedizin">Kinder - und Jugendmedizin</option>
	</select>									<br /><br />
	Ich m&oumlchte folgende/n Artikel bestellen:		<br /><br />
	<select name="Artikel" size="15" multiple>
	<%@ page pageEncoding="UTF-8" import="java.io.*" %>
	<%
	final String DATEI = "/var/www/intern/jspfiles/artikel.csv";
	FileReader medis = new FileReader(DATEI);
	BufferedReader medikamente = new BufferedReader (medis);
	String strLine;
	while (medikamente.ready()){
		strLine = medikamente.readLine();
		String[] einzelteile = strLine.split(";"); //nach jedem ; trennen und in Array speichern
		out.println("<option value="+einzelteile[0]+">"+einzelteile[1] +"  " +einzelteile[2] +"</option> <br/>");
	}
	medikamente.close ();
	medis.close ();
	%>
```


----------



## SlaterB (2. Mrz 2011)

dass in JSP Nummer 2 dann request.getParameterValues ("Artikel"); funktioniert kann ich nachvollziehen,

für JSP 3 vermute ich als Mängel einerseits die Groß/Kleinschreibung,
vor allem aber sind die die ganzen Daten nicht mehr vorhanden, die werden nicht per Zauberhand auch an den dritten Request weitergereicht,
alle Daten musst du glaube ich entweder als Hidden Fields ins Formular von JSP 2 eintragen oder genauso wie in JSP 1, gerne mit Vorauswahl,
oder die Informationen irgendwo im Server, etwa in der Session speichern, 
im dritten Request sind sie derzeit nicht enthalten


----------



## struppi79 (2. Mrz 2011)

Hallo Slater, mist, aber wie mache ich es dann?
Ich denke die Daten sind doch in JSP 2 noch vorhanden. da kann ich sie ja auch ausgebenam bildschirm, dann sind sie doch dort im formular und wenn ich es weiterschicke können die doch nicht verschwinden. ??? 
wie geht das mit dem Hidden field ???
Hat sonst jemand einen Vorschlag?


----------



## XHelp (2. Mrz 2011)

"Weiterschicken" gibts nicht. Du schickst das Formular ab, welches du erstellt hast. Wenn du mehr Werte schicken willst, dann musst du auch mehr Werte eintragen.
Versuch doch erstmal diesen Vorschlag. Zu den hidden-field: SELFHTML: HTML/XHTML / Formulare / Versteckte Elemente


----------



## struppi79 (2. Mrz 2011)

hm ich weiß nicht ob wir aneinander vorbei reden.
also: Im ersten HTML Formular lese ich eine CSV Datei ein, 
wähle einige DAtensätze ein und gib das ganze weiter an die zweite seite, hier kann der Benutzer von jedem DS (hier medikamente) verschiedene Mengen bestellen, das gebe ich an eine dritte seite weiter, könnt Ihr mir erklären warum das nicht weitergegeben wird?


----------



## XHelp (2. Mrz 2011)

Zeig mir mal aus dem 7. Posting die stelle im Code:

```
<input name="Artikel"...>
```
die dafür sorgt, dass dieser Parameter mit dem Formular geschickt wird.


----------



## struppi79 (2. Mrz 2011)

Hm ich kann Dir leider nicht ganz folgen ....
hilf mir auf die Sprünge


----------



## XHelp (2. Mrz 2011)

Treffen sich 2 im Wald. Mensch A sagt zu B: "Nudelsuppe". Der B nimmt es so hin und geht weiter. Einige Zeit später trifft der er auf C. Und der B sagt zu C: "42". Der C nimmt das so hin.
64'000€ Frage: weiß C von der Nudelsuppe oder sollte B es an ihn explizit weiterleiten?


----------



## struppi79 (2. Mrz 2011)

Hallo 
klar sollte er es an ihn weiterleiten, ich kapier aber nicht wie, ich verstehs nicht, scheinbar gebe ich die Daten von JSP2 nicht an JSP 3 weiter, ich weiss aber nicht wie ichs machen soll ..... :-(


----------



## SlaterB (2. Mrz 2011)

tja, ein leichtes Thema ist das nicht,
habe gerade versucht danach zu suchen, für PHP ist eine Seite
yubb.de - Die Webmaster-Community // Formular über mehrere Seiten
..

für die meisten Variable auch gar nicht so falsch, nur beim Array zweifle ich etwas,
hast du ein Tutorial nachdem du dich richtest? wenn schon nichts zu mehrseitigen Formularen dort steht, dann doch vielleicht wenigstens zu Zurückkehren zum ersten, etwa für Fehlerkorrektur, dabei muss man ja die ganzen Ursprungsdaten neu eingeben,
so wie du dein HTML selber zusammenbaust statt etwa Beans/ Tags zu verwenden wird aber auch diese von mir bereits genannte Variante schwer,
das ist alles nix für Anfänger, Ausprobieren, suchen, viel lesen, ..

am ehesten machbar halte ich für dich, die Daten in der Session abzuspeichern und von dort wieder abzufragen,
das ist technisch auch wieder eher ein Standardthema, falls noch nicht bekannt, dazu müsstest du was finden


----------

