# STRUTS/Cannot retrieve definition for form bean null on acti



## Marty77 (24. Okt 2006)

Hallo,

ich habe das Problem dass meine Form Klasse bzw. die FormBean Instanz nicht gefunden wird.
Vollständige Meldung lautet: 
javax.servlet.ServletException: Cannot retrieve definition for form bean null on action /view/ArtikelErfassung.do
Habe sehr lange versucht dass Problem selber zu lösen und viele Themen gelesen, finde den Fehler aber einfach nicht.
Deshalb wäre ich für etwas Hilfe sehr dankbar! (':toll:')


Ist leider einiges an Code, aber ohne wird mir wohl niemand einen Tipp geben können wo der Fehler liegen könnte..
Danke im vorraus!


```
ArtikelErfassung.jsp:

<%@ taglib uri='/struts-html' prefix='html' %>
<%@taglib uri='/struts-logic' prefix='logic'%>
<%@ taglib uri='/struts-bean' prefix='bean' %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"  %>

<c:import url="/banner"/>

<html>
    <head>
    <title><bean:message key="ArtikelErfassung.jsp.title"/></title> 
     </head>
<body>
    

<font face="Frutiger Light">[b]Anzeige Erfassung [/b]</font></p>
   
    <html:errors/>     
 	
    <html:form action='/view/ArtikelErfassung.do'>
      <table>                   
       <tr>
	 <td>Artikelnummer</td><td><html:text property="artikelNummer"/></td>
       </tr>
       <tr>
	 <td>Titel </td> <td> <html:text property="titel"/> </td>
       </tr>
       <tr>
	  <td>Autor</td> <td><html:text property="autor"/> </td>
       </tr>
       <tr>
	   <td>Preis </td> <td><html:text property="preis"/> </td>
	</tr>
	 <tr>
	    <td>Erscheinungsjahr</td>
            <td><html:textproperty="erscheinungsJahr"/> </td>
	  </tr>
	   <tr>
	      <td>Verlag </td> <td>	<html:text property="verlag"/> </td>
	  </tr>
	  <tr>
	       <td>Beschreibung </td> <td><html:text property="beschreibung"/>
               </td>
	  </tr>
	  <tr>
	      <td>Seitenzahl / Abspielzeit(min)</td> <td><html:text  
                     property="seitenZahl"/> </td>
	  </tr>	
	   <tr>
	      	<td>

  </p></td>
	   </tr>
	    <tr>
   		<td><html:submit>ArtikelErfassung </html:submit></td>
                <td>  <html:reset>Zuruecksetzen</html:reset></td>  
       	   </tr>
    </table>
  </html:form> 	

   </body>
</html>


STRUTS-CONFIG.XML:
.
.
<struts-config>


 
  
<form-beans>
	<form-bean name="AdministratorLoginForm"  type="actions.AdministratorLoginForm"/>
	
	<form-bean name="ArtikelErfassungForm"
			   type="actions.ArtikelErfassungForm">
		<form-property name="artikelNummer" type="java.lang.String"/>
    	        <form-property name="titel" type="java.lang.String"/>
    	        <form-property name="autor" type="java.lang.String"/>
    	        <form-property name="preis" type="java.lang.String"/>
    	        <form-property name="erscheinungsJahr" type="java.lang.String"/>
    	        <form-property name="verlag" type="java.lang.String"/>
    	        <form-property name="beschreibung" type="java.lang.String"/>
    	        <form-property name="seitenZahl" type="java.lang.String"/>
       </form-bean>
      
 </form-beans>
 
  
<action-mappings>   
 
       <action path="/view/AdministratorLogin"   
                     type="actions.AdministratorLoginAction"
               	     name="AdministratorLoginForm"
               	     scope="request"
               	      validate="true"
              	     input="/view/AdministratorLogin.jsp">
              <forward name="artikelErfassung"	
                                path="/view/ArtikelErfassung.jsp"/>
       	</action>
     
       <action path="/view/ArtikelErfassung"
        		type="actions.ArtikelErfassungAction">
        		name="ArtikelErfassungForm"
        		scope="request"
                	validate="true"
        		input="/view/ArtikelErfassung.jsp">
              <forward name="artikelErfassungAnzeigen" path="/view/ArtikelErfassungAnzeige.jsp"/>
        </action> 
      .
      .
ARTIKELERFASSUNGACTION:

package actions;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class ArtikelErfassungAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        ArtikelErfassungForm artikelErfassungForm = (ArtikelErfassungForm) form;
       
        return mapping.findForward("artikelErfassungAnzeigen");
    }
}

      
ARTIKELERFASSUNGFORM:

package actions;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

public class ArtikelErfassungForm extends ActionForm {
	     
    private String artikelNummer = null;
    private String titel = null;
    private	String autor = null;
    private	String preis = null;
    private	String erscheinungsJahr = null;
    private	String verlag = null;
    private	String beschreibung = null;
    private	String seitenZahl = null;
    
    
    public String getArtikelNummer() {
        return artikelNummer;
    }
    
    public void setArtikelNummer(String artikelNummer) {
        this.artikelNummer = artikelNummer;
    }
    
    public String getAutor() {
        return autor;
    }
    
    public void setAutor(String autor) {
        this.autor = autor;
    }
    
    public String getBeschreibung() {
        return beschreibung;
    }
   
    public void setBeschreibung(String beschreibung) {
        this.beschreibung = beschreibung;
    }
    
    public String getErscheinungsJahr() {
        return erscheinungsJahr;
    }
   
    public void setErscheinungsJahr(String erscheinungsJahr) {
        this.erscheinungsJahr = erscheinungsJahr;
    }
  
    public String getPreis() {
        return preis;
    }
    
    public void setPreis(String preis) {
        this.preis = preis;
    }
  
    public String getSeitenZahl() {
        return seitenZahl;
    }
   
    public void setSeitenZahl(String seitenZahl) {
        this.seitenZahl = seitenZahl;
    }
   
    public String getTitel() {
        return titel;
    }
   
    public void setTitel(String titel) {
        this.titel = titel;
    }
   
    public String getVerlag() {
        return verlag;
    }
   
    public void setVerlag(String verlag) {
        this.verlag = verlag;
    }
    
    
    
    public void reset(ActionMapping mapping, HttpServletRequest request) 
    {
        artikelNummer = null;
        titel = null;
        autor = null;
        preis = null;
        erscheinungsJahr = null;
        verlag = null;
        beschreibung = null;
        seitenZahl = null;
        
    }

    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) 
    {
       ActionErrors errors = new ActionErrors();
       
       if((artikelNummer == null) || (artikelNummer.length() < 1)) 
       {
          errors.add("artikelNummer.erforderlich", new ActionError("error.artikelNummer.erforderlich"));
       }
       if(( titel == null) || ( titel.length() < 1)) 
       {
          errors.add("titel.erforderlich", new ActionError("error.titel.erforderlich"));
       }
       if((autor == null) || (autor.length() < 1)) 
       {
          errors.add("autor.erforderlich", new ActionError("error.autor.erforderlich"));
       }
       
       if((preis == null) || (preis.length() < 1)) 
       {
          errors.add("preis.erforderlich", new ActionError("error.preis.erforderlich"));
       }
        
       if((erscheinungsJahr == null) || (erscheinungsJahr.length() < 1)) 
       {
          errors.add("erscheinungsJahr.erforderlich", new ActionError("error.erscheinungsJahr.erforderlich"));
       }
       if((verlag == null) || (verlag.length() < 1)) 
       {
          errors.add("verlag.erforderlich", new ActionError("error.verlag.erforderlich"));
       }
       if((beschreibung == null) || (beschreibung.length() < 1)) 
       {
          errors.add("beschreibung.erforderlich", new ActionError("error.beschreibung.erforderlich"));
       }
       if((seitenZahl == null) || (seitenZahl.length() < 1)) 
       {
          errors.add("seitenZahl.erforderlich", new ActionError("error.seitenZahl.erforderlich"));
       }
         
       return errors;
    }
```


----------



## clemson (24. Okt 2006)

versuchs mal mit der änderung in der jsp:

```
<html:form action="/view/ArtikelErfassung">
...
</html:form>
```

und der in der struts-config.xml (ohne angabe der elemente, da du diese ja in der ArtikelErfassungForm.java definierst):

```
<form-bean name="ArtikelErfassungForm" type="actions.ArtikelErfassungForm" />
```


----------



## Marty77 (25. Okt 2006)

Hallo und Danke erstmal,

weiß jetzt wo der Fehler gelegen hat und zwar war es ein Syntax Fehler in der struts-config.xml:



<action path="/view/ArtikelErfassung" type="actions.ArtikelErfassungAction"> // Klammer >, Fehler!!!!!!
            name="ArtikelErfassungForm" 
            scope="request"
            validate="true" 
            input="/view/ArtikelErfassung.jsp"> 

Nach Beseitigung der Klammer funktioniert es jetzt, auch ohne die von dir vorgeschlagenen Änderungen.

Gruß
Marty


----------



## clemson (25. Okt 2006)

aber die angaben der properties in deiner form-bean config sind trotzdem überflüssig. du definierst innerhalb deiner action klasse welche properties es gibt und daher müssen diese auch nicht mehr angegeben werden in der struts-config.

außerdem würde ich bei der angabe des html:form elements die action deshalb ohne dem .do angeben, da du ansonsten das mvc paradigma verletzt. wenn du dir allerdings einen gobal-forward definierst und nur diesen in dem html:form element angibst, dann kannst du am controller / in deiner struts-config die action umbenennen wie du willst. du musst nichts ändern in deiner view / deiner jsp. ist zwar eine kleinigkeit aber trotzdem...


----------



## Marty77 (3. Nov 2006)

Ok, die properties hab ich rausgenommen und auch das .do werde ich dann weglassen.

Danke !


----------

