Announcement

Collapse
No announcement yet.

Beans werden von Servlet nicht korrekt geladen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Beans werden von Servlet nicht korrekt geladen

    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

  • #2
    vermutlich doch, weil der Username nicht in der Liste gefunden wird

    int count = liste.indexOf(loginname);

    wird wohl nichts zurückgeben. Das wiederum könnte die Ursache haben, dass du vorhandene Daten zwar in den Request schreibst, aber nicht rausholst, wenn du darauf zugreifst. Da würde ich mal debuggen oder eine Ausgabe machen

    Das Handling, die Daten +x in einer Liste zu halten ist schlecht. Wozu die Klasse UserData?

    Sehe auch nicht, wo hier lt. Überschrift eine Bean nicht geladen wird?
    Christian

    Comment

    Working...
    X