getParameter("id") = null - warum?

Thaflasher

Mitglied
Hi Forum,

ich arbeite gerade an einem Servlet das mir mein Dateisystem darstellt. Funktioniert auch soweit und ich bekomme alle Verzeichnisse und Dateien angezeigt.

Damit ich aber auch in den jeweiligen Ordner hinein kann bzw. die jeweilige Datei laden kann, benötige ich einen "Öffnen" bzw. "Laden" Button neben der jeweiligen Datei bzw. Verzeichnis.

Da ich eine ArrayList für die Dateinamen und eine für die Verzeichnisse ist die Sache mit 2 Schleifen auch schnell erledigt.

Hier z.B. die Schleife für die Verzeichnisse:

Java:
for (int i = 0; i < directoryList.size(); i++) {
				id=i;
				out.write("<tr>");
				out.write("<td><img src="+'"'+ "mypicture.jpg"+'"' + " alt=mypicture</img>");
				out.write("<td>"+directoryList.get(i)+"</td>");
				out.write("<td><input type=submit id=d"+id+" name=open  value=&Ouml;ffnen ></td>");
				out.write("</tr>");
			}

Damit ich feststellen kann welcher Button gedrückt wurde habe ich in das input eine id gesteckt, das sollte mir das suchen ersparen -> das "d" steht für "directory" und die id erhöht sich mit den Schleifendurchläufen.

Schließlich um den Dateipfad zu erneuern:

Java:
String open = request.getParameter("open");

if(open!=null){
directory= directory + directoryList.get(Integer.valueOf(request.getParameter("id")));
}

Warum bekomme ich für die "id" immer null? Bei 5 gleich lautenden open-Button stellt er ja auch fest, dass eines davon betätigt wurde. Wenn ich jetzt bei dem "name"-Parameter die id hinzufügen muss, und dann "name0" bis "name1000" durchsuchen muss, ob irgend eines nicht null ist, kommt mir das etwas performance lastig vor.

Hat jemand eine Idee? ???:L

Danke
 

mjustin

Aktives Mitglied
"id" ist kein Parameter, sondern nur ein weiteres Attribut des input-Elements.

Welche Parameter im Request enthalten sind kann man über die ParameterMap ermitteln.

Auf diesem Weg könnte man auch das Problem lösen, indem der Name (statt der ID) des Parameters variabel erzeugt wird, und dann im Servlet die ParameterMap alle Parameter durchsucht.
 

Thaflasher

Mitglied
Okay habs nun mit einem variablen Namen gelöst:

Java:
String attname = null;
		
		for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
			attname = (String) e.nextElement();
		}

das gibt mir alle Parameter bzw. in meinem Falle genau 1nen (den angekickten) :)

dann Listenindex herausfinden:

Java:
if(attname!=null){
			if(attname.contains("open")){				
				int index = Integer.valueOf(attname.substring(4)); //open hat 4 chars -> ab stelle 4 steht dann meine id
				directory = directory + directoryList.get(index)+"/";
			}
}

Funktioniert wunderbar!

Danke an alle für die Denkanstöße
 

5474n

Mitglied
Hallo,
habe ein sehr ähnliches Problem!
Erstelle eine CD-Verwaltung mit Servlets (sagt meine Aufgabe so)
habe meine Textfelder in der Methode:

Java:
protected void oberflaeche(HttpServletRequest rquest, HttpServletResponse response)
		throws ServletException, IOException
	{

		PrintWriter out = response.getWriter();
		out.println("<form METHOD=POST>\n"
			+ "Bitte füllen Sie die folgenden Eingabefelder aus.<br><br>");
		DatenVector.DatenStaender.setSize(50);
		out.println("Fach:\n"
			+ "<input type=\"text\" size=\"2\" maxlength=\"2\" name=\"fachangabe:\">\n"

			+ "Interpret:\n"
			+ "<input type=\"text\" size=\"30\" maxlength=\"25\" name=\"interpret\"><br>\n"

			+ "Titel:\n"
			+ "<input type=\"text\" size=\"30\" maxlength=\"25\" name=\"titel\"><br>\n"

			+ "Kategorie:\n"
			+ "<select name=\"kategorie\">\n"
			+ "<option value=\"Klassik\">Klassik</option>\n"
			+ "<option value=\"Pop\">Pop</option>\n"
			+ "<option value=\"Rock\">Rock</option>\n"
			+ "<option value=\"Techno\">Techno</option>\n"
			+ "</select><br>\n"

			+ ("Kaufdatum:\n"
				+ "<input type=\"text\" size=\"30\" maxlength=\"25\" name=\"kaufdatum:\">\n")

			+ "<input type=SUBMIT value=\"Speichern\">\n" + "</form>\n");
	}
}

anschließend rufe ich ja mit dem Button "Speichern" meine doPost Methode auf.
In dieser möchte ich nun meine Eingaben in ein zuvor angelegtes Objekt abspeichern lassen.

Java:
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException
	{
		DatenVector.DatenStaender.setSize(50);
		PrintWriter out = response.getWriter();
		int ikontrolle = DatenVector.kontrolle();


		
		try
		{
			String fachangabe = request.getParameter("fachangabe");
			
			int iFachangabe = Integer.parseInt(fachangabe);

			String interpret = request.getParameter("interpret");

			String titel = request.getParameter("titel");

			String kategorie = request.getParameter("kategorie");

			String kaufdatum = request.getParameter("kaufdatum");

			Traeger neuDt;
			if (ikontrolle != 0)
			{

				neuDt = new Traeger(); 
				neuDt.setiFachangabe(iFachangabe);
				neuDt.setsInterpret(interpret);
				neuDt.setsTitel(titel);
				neuDt.setsGenre(kategorie);
				neuDt.setsKaufdatum(kaufdatum);
				DatenVector.DatenStaender.setElementAt(neuDt, iFachangabe);

			}
		}
		catch (Exception ex)
		{
			if (ex.getMessage().equals("null"))
			{
				out.println("Nullpointer Exception. Schwerwiegender Fehler");
			}
			else
			{
			}
		}
		

	}

funktionier das schon mit
Code:
request.getParameter("")
?

danke im Vorraus
 

5474n

Mitglied
bekomme aber bei allen
Code:
getParameter("")
nur
Code:
null
zurückgegeben.
was muss ich ändern, beachten?
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Warum Du bei allen Parametern null zurück bekommst, sehe ich jetzt nicht. Aber in einigen Fällen hast Du einen kleinen Schreibfehler drinnen. Im generierten Html hast du den ":" (Doppelpunkt) mit im name-Attribut (bei fachangabe und kaufdatum). Bei den getParameter()s aber nicht.

Für's Debugging kannst Du mal über das Ergebnis von getParameterNames() iterieren und mit Sysout.println oder Log-Statement mal schauen, was da überhaupt bei dem Servlet ankommt.
 

5474n

Mitglied
Es lag an den Rechtschreibfehlern:autsch:, habe die Doppelpunke entfernt und nun funktioniert das Speichern ohne Probleme!!
:applaus: für nillehammer
habe noch so viel ausprobiert und zu keinem Ergebnis gekommen.
Fazit und Merke: Augen richtig öffnen, kann helfen!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R getParameter() liefert null Web Tier 6
7 kein Absatz mittels request.getParameter()?? Web Tier 8
ruutaiokwu request.getParameter() Web Tier 3
P request.getParameter("name") von Formular auf JSP-Seite leer Web Tier 5
E Problem mit request.getParameter Web Tier 5
S PathParam null Web Tier 5
L Set<T> Attribut eines Objektes wird zu null in thymeleaf Web Tier 2
G JSF JSF 2.3 Converter injection/persistence context -> null Web Tier 2
D Spring Sessions sind null Web Tier 10
FINF_AW_Alex Bin ich jetzt bekloppt?!? / Property not found (resolved tu null) Web Tier 5
S value auf null setzen Web Tier 3
J JSF BigInteger nicht null sondern 0 Web Tier 3
J Nach SVN-Update alle Beans resolved to null Web Tier 3
J facesContext ist null bei seam-Projekt Web Tier 3
D JSF EL #{not null bean.property} Parse exception Web Tier 2
B JSF,JPA = [ id=null ] is not a known entity type. Web Tier 3
G Servlet getSession(false) in HttpServletRequest gibt nie null zurück Web Tier 3
J JSF/CDI - Target Unreachable, identifier 'user' resolved to null Web Tier 5
P JSF Formularwert null Web Tier 10
P FacesContext.getCurrentInstance () liefert Null Web Tier 6
T Seam-Projekt Eingabefeld mit "null"-Wert Web Tier 7
H facestrace - null pointer exception Web Tier 3
G Tomahawk FileUpload UploadedFile ist null Web Tier 4

Ähnliche Java Themen

Neue Themen


Oben