NullpointerException requestgetParameterValues

struppi79

Mitglied
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???
 
Zuletzt bearbeitet von einem Moderator:

struppi79

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

Java:
  <%@ 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++){
 
S

SlaterB

Gast
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

Mitglied
Hm ja genau also das hier ist die vorherige Seite....
Meines Erachtens sollte Artikel schon existieren !
Hier funktioniert alles :) (zumindest hier)
Java:
  	<%@ 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>
 
S

SlaterB

Gast
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

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

Java:
<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 ();
	%>
 
S

SlaterB

Gast
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

Mitglied
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?
 

struppi79

Mitglied
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

Top Contributor
Zeig mir mal aus dem 7. Posting die stelle im Code:
Code:
<input name="Artikel"...>
die dafür sorgt, dass dieser Parameter mit dem Formular geschickt wird.
 

XHelp

Top Contributor
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

Mitglied
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 ..... :-(
 
S

SlaterB

Gast
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
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...

Ähnliche Java Themen

Neue Themen


Oben