JSP/Servlet setAttribute Problem

desmoloch

Mitglied
hi!
ich habe ein problem mit JSP und einem Servlet.
Das JSP ist ein Formular, welches das Servelt aufruft. Klappt wunderbar!
das Servlet macht folgendes:

Code:
            RequestDispatcher rDispatcher = null;
            rDispatcher = request.getRequestDispatcher("index.jsp");
            request.setAttribute("error", "test");
            try
            {
                rDispatcher.forward(request, response); 
             }
            catch (Exception e)
            {
                System.out.println("exception...");
            }

Es leitet request und response einfach nur wieder an meine index.jsp (das formular) zurück und setzt zusätzlich noch das (neue) Attribut "error".
In meiner Index.jsp habe ich noch folgenden Code:
Code:
<% out.println(request.getParameter("error"));
%>

beim 1. Start der index.jsp ist das (verständlicherweise) null. Wenn ich aber den Button klicke und das Servlet aufgerufen wird, steht da trotzdem wieder null ! Im Servelt kann ich ein SystemOut machen (request.getAttribute("error");) und er gibt mir test aus! In der JSP allerfdings steht dann wieder null...
was mache ich falsch?
 
Thomas Darimont hat gesagt.:
Hallo!

WIe wär's denn wenn du im Servlet den Parameter nicht im Request sondern im Response setzten würdest?

Gruß Tom

jetzt hast du mich aber geschockt, mache jsp seit 3 tagen ;)
alsoo ich setze das Attribut nicht im response, weils da nichts zu suchen hat ;)
mein anliegen ist folgendes:
Ein User füllt ein Formular aus und klickt auf absenden. Das Servlet merkt das ein Feld nicht ausgefüllt wurde! Deswegen ruft das Servlet wieder die index.jsp auf und fügt zusätzlich noch das Attribut error hinzu, welches das fehlende Feld als String enthält.
Deswegen muss ich das Attribut ja ans Request hängen! Denn die Jsp liest die request daten aus!
 
Hallo!

Also das mit response war natürlich Käse... shame on me...
das hier Funktioniert bei mir:

JSP:
Code:
<%@page contentType="text/html"%>
<html>
<head><title>JSP Page</title></head>
    <form action="http://localhost:8081/servlet/Servlet" method="get">    
       <input type="Submit" text="Senden"> 
    </form>
    <%
        Object o = request.getAttribute("error");
	out.println(o);
    %>
</body>
</html>

Servlet:
Code:
/*
 * Servlet.java
 *
 * Created on 14. Oktober 2004, 11:31
 */

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

/**
 *
 * @author  Darimont
 * @version
 */
public class Servlet extends HttpServlet {
    
    /** Initializes the servlet.
     */
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        
    }
    
    /** Destroys the servlet.
     */
    public void destroy() {
        
    }
    
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        System.out.println("processRequest");
        RequestDispatcher rDispatcher = null;
        rDispatcher = request.getRequestDispatcher("/JSP.jsp");
        request.setAttribute("error", "test");
        try {
            rDispatcher.forward(request, response);
        }
        catch (Exception e) {
            System.out.println("exception...");
        }
    }
    
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
}

Gruß Tom
 
hehe :)
dank dir für das super Beispiel!
Genauso hab ich es auch, bis auf:

Code:
	out.println(request.getAttribute("error"));

dort hatte ich:

Code:
    out.orintln(request.getParameter("error"));

das war auch schon der einzige fehler...
super ich danke dir :))
 
nur um jetzt nicht gleich ein Thema zu eröffnen:

ich möchte gerne in mein reponse-objekt in der jsp einen Parameter setzen, nur gibt es keine setParameter(...). Mein Anligen ist folgendes: Weiterleitung mit (bereits erhaltenen) Parametern an eine andere jsp, ohne ein hidden-Formular zu erstellen.

Kann jemand da helfen?
 

Neue Beiträge

Zurück