# JSF: Property not found Exception



## LogiSas (4. Dez 2010)

Hallo zusammen,

ich fange gerade an mich in JSF2 einzulesen und versuche mich gerade an Managed Beans. Leider komme ich gerade nicht weiter und hoffe, ihr könnt mir behilflich sein.

Ich habe hier verschiedene Menüeinträge. Beim Betätigen des Links "menuItems" soll nun eine entsprechende Methode in der Bean "ItemList" aufgerufen werden:


```
<div>
   <ul>
         <h:form id="form">
		<li><a><h:commandLink name="menuHome" value="Home"  action="/index.xhtml" /></a></li> 
		<li><a><h:commandLink name="menuItems" value="Items"  action="#{ItemList.test}" /></a></li> 
                          ...
	</h:form>
  </ul>
<br class="clearit" />
</div>
```

Methode in "ItemList":

```
public String test(){ 		
		FileSearch f = new FileSearch();		
		setItem(t.searchItem("67895"));		
		return "/nextPage.xhtml";
	}
```

Lasse ich das Projekt laufen und betätige den entsprechenden Link, so bekomme ich jedoch folgende Fehlermeldung:

```
javax.servlet.ServletException: Property 'getDetails' not found on type org.[...].entity.Item
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)


root cause 
javax.el.PropertyNotFoundException: Property 'getDetails' not found on type org.[...].entity.Item
	javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:193)
	javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:170)
	javax.el.BeanELResolver.property(BeanELResolver.java:279)
	javax.el.BeanELResolver.getValue(BeanELResolver.java:60)
	javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
	com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
	org.apache.el.parser.AstValue.getValue(AstValue.java:123)
	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:71)
	com.sun.faces.facelets.el.ELText$ELTextVariable.toString(ELText.java:207)
	com.sun.faces.facelets.el.ELText$ELTextComposite.toString(ELText.java:148)
	com.sun.faces.facelets.compiler.CommentInstruction.write(CommentInstruction.java:70)
	com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:75)
	com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:176)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
	com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:380)
	com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
	javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:273)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
```

Item sieht folgendermaßen aus:

```
public class Item {
	
	private String name;
	
	private String description;	

	private Item item;
	
	/**
	 * Default constructor.
	 */
	public Item(){
		
	}	
	
	public Item(String name, String description){
		this.name = name;
		this.description = description;
		}
	
	public void setItem(String name, description){
		this.name = name;	
		this.description = description;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}	

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}
	
	
	/*public String getDetails(){
		 String linkC = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("detailP");
		FileSearch f = new FileSearch();
		item = f.searchItem(linkC);
		return "/nextPage.xhtml";
	}*/	
}
```

Obwohl nun die Methode "getDetails" ausgeklammert ist, verursacht sie eine Fehlermeldung... zudem wird sie auch nirgendwo mehr aufgerufen.
Vermutlich ist das ein einfachers Anfängerproblem. Kann mir jemand auf die Sprünge helfen?


----------



## gman (4. Dez 2010)

> javax.el.PropertyNotFoundException: Property 'getDetails' not found on type org.[...].entity.Item



"*entity*"? Kann das sein das du hier Entity-Klassen und ManagedBeans durcheinander schmeisst? "getDetails" ist
eine Methode die in einer ManagedBean stehen könnte, "Item" sieht aber so aus als ob es eine Entity-Klasse wäre (also
eine Klasse die nur auf eine Tabelle in einer DB mappt).

Wenn die Fehlermeldung immer noch auftaucht, obwohl du die Methode rausgeschmissen hast, musst du vielleicht die
Anwendung mal komplett neu bauen "clean" und dann auch neu deployen (kein Hot-Deployment). Vielleicht sind noch
irgendwo alte Daten gecached.


----------



## LogiSas (5. Dez 2010)

Super, das hat geholfen! Danke!

Naja, bin halt noch ein Neuling...


----------

