# Kein definiertes Bean? --- JDeveloper



## bronks (4. Jan 2005)

Ich hab eine ganz einfache WebApplication. 

1 Controller
1 Bean
1 JSP

Das ganze in Netbeans gebaut, läuft wunderbar. 

So experimentierfreudig wie ich bin hab ich das Projekt schnell mal in der JDeveloper reingebracht. 

Wenn ich ein Run auf den Controller mache, dann erlaubt sich der JDeveloper mir eine Fehlermeldung in *deutscher Sprache* entgegenzusetzen. Ich weiß nicht wie der JDeveloper plötzlich gelernt hat mich auf deutsch zu schimpfen.

Die Meldung kommt von der durch den Controller aufgerufenen JSP und meint: *Error(5): Fehler in Attributliste: Beanname ist kein definiertes Bean.* Diese Meldung sagt mir überhaupt NULL.

In der JSP steht nur ein bissl HTML und ein paar "jsp:getProperty". Diese wird vom Controller aufgerufen, der als Attribut die betroffene Bean mitgibt. 

Ich bin für jeden Tip dankbar, weil ich garnicht weiß, was ich jetzt unternehmen soll.  

Danke!


----------



## bronks (4. Jan 2005)

Die Fehlermeldung wird nicht mehr angezeigt. Ich hab in die JSP ein jsp:useBean eingetragen, obwohl es eigentlich und normal nicht nötig wäre. 

Dafür bekommt der Controller jetzt die JSP nicht aufgerufen. Die JSP liegt im Root der Webapp und er sucht sie in "/servlet/". Ich werd daraus nicht schlau ...


----------



## foobar (5. Jan 2005)

Poste doch mal etwas Code.


----------



## bronks (5. Jan 2005)

Hab jetzt ein vereinfachtes Beispiel zusammengebaut. Auch hier tritt der Fehler auf.

Die JSP wird hier gesucht: "c:\...\DPViewer\MiniWebApp\public_html\servlet\dpviewer.jsp" und hier liegt sie in Wirklichkeit: "c:\...\DPViewer\MiniWebApp\public_html\dpviewer.jsp". Das Verzeichnis mit "/servlet/" existiert auf meiner Festplatte überhaupt nicht.

Der Controller:

```
package dpviewer;

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

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

public class ViewerController extends HttpServlet {
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

        HttpSession session = request.getSession();
        
        ViewerBean bean = (ViewerBean) session.getAttribute("viewerbean"); 
        if (bean == null) 
        bean = new ViewerBean(); 
        
        bean.setSampleProperty("Irgendein Text");
        
        session.setAttribute("viewerbean", bean);
        RequestDispatcher dispatcher = request.getRequestDispatcher("dpviewer.jsp");
        dispatcher.forward(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
}
```


Die Bean:

```
package dpviewer;

import java.beans.*;
import java.io.Serializable;

public class ViewerBean extends Object implements Serializable {
    
    public static final String PROP_SAMPLE_PROPERTY = "sampleProperty";
    
    private String sampleProperty;
    
    private PropertyChangeSupport propertySupport;
    
    public ViewerBean() {
        propertySupport = new PropertyChangeSupport(this);
    }
    
    public String getSampleProperty() {
        return sampleProperty;
    }
    
    public void setSampleProperty(String value) {
        String oldValue = sampleProperty;
        sampleProperty = value;
        propertySupport.firePropertyChange(PROP_SAMPLE_PROPERTY, oldValue, sampleProperty);
    }
    
    
    public void addPropertyChangeListener(PropertyChangeListener listener) {
        propertySupport.addPropertyChangeListener(listener);
    }
    
    public void removePropertyChangeListener(PropertyChangeListener listener) {
        propertySupport.removePropertyChangeListener(listener);
    }
    
}
```


Die JSP liegt im Root des WebContent-Verzeichnisses (Der JDeveloper besteht auf das jsp:useBean, sonst läuft es auch ohne):

```
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<html>

<jsp:useBean id="viewerbean" scope="session" class="dpviewer.ViewerBean" />

    <jsp:getProperty name="viewerbean" property="sampleProperty" />
   
    </body>
</html>
```


----------



## bronks (5. Jan 2005)

Noch zur Info: Wenn ich das "public_html"-Verzeichnis aus dem Projekt auf den Tomcat schiebe und die Serlvetmappings anpasse, dann läuft das ganze einwandfrei ...  Nur wenn ich das Servlet aus dem JDeveloper aufrufe, dann geht es nicht.

*Und Hurra. Dadurch hab ich auch die Lösung gefunden. Der JDeveloper trägt in der "web.xml" zwar das Servlet ein, aber mapt es nicht. Wenn man das mapping per Hand einträgt, dann funktioniert es auch direkt aus dem JDeveloper.*

Es ist merkwürdig, daß der JDeveloper ein ungemaptes Servlet überhaupt aufruft, aber sonst bin ich schon gespannt, was man aus dem Prog so alles rausholen kann. Die Werkzeuge für EE-Anwendungen machen auf den ersten Blick ja einen ernorm guten Eindruck.


----------



## bronks (5. Jan 2005)

Man sollte auch darauf achten die Paketnamen grundsätzlich kleinzuschreiben, weil der JDeveloper alle Verzeichnisse im "/web-inf/classes" nur in kleinen Buchstaben anlegt.


----------

