Hallo,
folgende Situation:
Ich habe ein Servlet, welches eine Klasse aufruft, die mittels einer Arraylist Daten in ein Bean lädt. Das Bean wird dann in eine requestattribut geheftet und an eine jsp geleitet welches die Daten aus der Bean abruft und darstellt.
Ausschnitt: Servlet:
..............
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
database.hardcoded hardcoded = new database.hardcoded();
beans.UserData userData = new beans.UserData();
hardcoded.loaduser();
hardcoded.loaduserbean(userData, username);
request.setAttribute("userData", userData);
............
Ausschnitt: Klasse load Data in Bean:
........
public void loaduser() {
liste.add("Max");
liste.add("0000");
liste.add("Max Müller");
liste.add("04.03.1983");
liste.add("Müllerstr.13, München");
liste.add("Hans");
liste.add("1111");
liste.add("Hans Wurst");
liste.add("02.09.1985");
liste.add("Wurststr., 45032 Frankfurt");
}
public void loaduserbean(UserData userData, String loginname) {
int count = liste.indexOf(loginname);
String username = (String) liste.get(count);
String password = (String) liste.get(count+1);
String name = (String) liste.get(count+2);;
String geburtstag = (String) liste.get(count+3);;
String anschrift = (String) liste.get(count+4);;
userData.setUsername(username);
userData.setPassword(password);
userData.setName(name);
userData.setBirthday(geburtstag);
userData.setAddress(anschrift);
}
....................
Wenn ein Update stattfindet, wird quasi der gleiche gemacht, allerdings wird die Klasse loaduserbean mit einem String aufgerufen der per Parameter an das Servlet übergeben wurde:
Ausschnitt Update Servlet:
..........................
String test = request.getParameter("user");
database.hardcoded hardcodeds = new database.hardcoded();
beans.UserData userDatas = new beans.UserData();
hardcodeds.loaduser();
hardcodeds.loaduserbean(userDatas, test);
request.setAttribute("userData", test);
RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher("/intern.jsp?username="+test+"");
dispatcher.forward(request, response);
.........................
Jetzt das eigentliche Problem:
Wenn ich hardcoded.loaduserbean(userData userdata, String username) mit einem vorherdefinierten String aufrufe, dann klappt alles wunderbar. Wenn ich loaduserbean aber mit einem String aufrufe, der aus einem request stammt(String test= request.getParameter("user"), dann bekomme ich immer die fehlermeldung:
java.lang.ArrayIndexOutOfBoundsException: -1
Dabei kann ich mir nicht erklären, worin der Unterschied liegt zwischen einem definierten String und dem String den ich aus request.getParameter("user") auslese. Ich habe schon überprüft und den WErt ausgelesen. request.getParameter("user") gibt auf jeden Fall einen String zurück.
Ich hoffe ich konnte das einigermaßen verständlich erklären.
Ich bin dankbar für jeden Rat. Habe schon alles ausprobiert.
Viele Grüße
jspneuling
folgende Situation:
Ich habe ein Servlet, welches eine Klasse aufruft, die mittels einer Arraylist Daten in ein Bean lädt. Das Bean wird dann in eine requestattribut geheftet und an eine jsp geleitet welches die Daten aus der Bean abruft und darstellt.
Ausschnitt: Servlet:
..............
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
database.hardcoded hardcoded = new database.hardcoded();
beans.UserData userData = new beans.UserData();
hardcoded.loaduser();
hardcoded.loaduserbean(userData, username);
request.setAttribute("userData", userData);
............
Ausschnitt: Klasse load Data in Bean:
........
public void loaduser() {
liste.add("Max");
liste.add("0000");
liste.add("Max Müller");
liste.add("04.03.1983");
liste.add("Müllerstr.13, München");
liste.add("Hans");
liste.add("1111");
liste.add("Hans Wurst");
liste.add("02.09.1985");
liste.add("Wurststr., 45032 Frankfurt");
}
public void loaduserbean(UserData userData, String loginname) {
int count = liste.indexOf(loginname);
String username = (String) liste.get(count);
String password = (String) liste.get(count+1);
String name = (String) liste.get(count+2);;
String geburtstag = (String) liste.get(count+3);;
String anschrift = (String) liste.get(count+4);;
userData.setUsername(username);
userData.setPassword(password);
userData.setName(name);
userData.setBirthday(geburtstag);
userData.setAddress(anschrift);
}
....................
Wenn ein Update stattfindet, wird quasi der gleiche gemacht, allerdings wird die Klasse loaduserbean mit einem String aufgerufen der per Parameter an das Servlet übergeben wurde:
Ausschnitt Update Servlet:
..........................
String test = request.getParameter("user");
database.hardcoded hardcodeds = new database.hardcoded();
beans.UserData userDatas = new beans.UserData();
hardcodeds.loaduser();
hardcodeds.loaduserbean(userDatas, test);
request.setAttribute("userData", test);
RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher("/intern.jsp?username="+test+"");
dispatcher.forward(request, response);
.........................
Jetzt das eigentliche Problem:
Wenn ich hardcoded.loaduserbean(userData userdata, String username) mit einem vorherdefinierten String aufrufe, dann klappt alles wunderbar. Wenn ich loaduserbean aber mit einem String aufrufe, der aus einem request stammt(String test= request.getParameter("user"), dann bekomme ich immer die fehlermeldung:
java.lang.ArrayIndexOutOfBoundsException: -1
Dabei kann ich mir nicht erklären, worin der Unterschied liegt zwischen einem definierten String und dem String den ich aus request.getParameter("user") auslese. Ich habe schon überprüft und den WErt ausgelesen. request.getParameter("user") gibt auf jeden Fall einen String zurück.
Ich hoffe ich konnte das einigermaßen verständlich erklären.
Ich bin dankbar für jeden Rat. Habe schon alles ausprobiert.
Viele Grüße
jspneuling
Comment