# JSF: Could not retrieve value of component



## boxi (31. Aug 2007)

Hallo zusammen

Ich wollte mal etwas mit JSF machen... und scheitere schon bei einem einfachen Login. Dabei habe ich unter JSF ein EJB UserManager die JSF Seite sieht wie folgt aus:


```
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<f:loadBundle var="welcometxt" basename="welcome.texts"/>
<f:loadBundle var="logintxt" basename="login.texts"/>
<f:loadBundle var="Generaltxt" basename="general.texts"/>

<html>
  <f:view>
  <head>
    <title><h:outputText value="#{generaltxt.title}" /></title>
  </head>
  
  <body>
    <h3><h:outputText value="#{logintxt.login}" /></h3>
    

<h:outputText value="#{logintxt.loginmsg}" /></p>
    <h:form>
      <h:panelGrid border="0" columns="2">
        <f:facet name="header">
          <h:outputText value="#{logintxt.login}"/>
        </f:facet>
      
        <h:outputText value="#{logintxt.user}"/>
        <h:inputText value="#{login.password}" required="true"/>
        
        <h:outputText value="#{logintxt.pass}"/>
        <h:inputText value="#{login.username}" required="true"/>
        
        <h:commandButton action="#{login.login}" value="Submit"/>
      </h:panelGrid>
    </h:form>
    <h:messages/>
  </body>
  </f:view>
</html>
```

Das dazugehörige Bean:

```
public class Login {
	private String userName;
	private String password;
	private User user;
	
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	
	public String login(){
		UserManager uMgmt = (UserManager) ServiceLocator.getSessionBean("privateBank/remote/UserManager");
		if(uMgmt == null){
			return "error";
		}
		else{
			user = uMgmt.login(userName, password);
			if(user != null){
				return "succes";
			}
			else{
				return "error";
			}
		}
	}
	
}
```

Dabei erhalte ich immer die Fehlermeldung:
	
	
	
	





```
javax.faces.FacesException: Could not retrieve value of component with path : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /login.jsp][Class: javax.faces.component.html.HtmlForm,Id: _idJsp3][Class: javax.faces.component.html.HtmlPanelGrid,Id: _idJsp4][Class: javax.faces.component.html.HtmlInputText,Id: _idJsp9]}
	org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:425)
	org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211)
	org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
	org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
```

Ich bin mit meinem Latein völlig am Ende. Ich weiss nicht mehr was ich hier falsch mache. Könnt Ihr mir helfen.


----------



## SnooP (31. Aug 2007)

Versuche doch einfach mal schrittweise vorzugehen... also immer erstmal ein Feld ausgeben etc..

ich sehe erstmal zumindest einen signifikanten Unterschied zwischen 
Generaltxt und generaltxt. Vielleicht liegt's schon daran... - ansonsten guck ob in der faces-config alles korrekt ist, sprich dass der controller unter dem Namen login auch existiert und dann empfiehlt sich auch RemoteDebugging mit Eclipse (siehe die Tomcat-Doku dazu).


----------



## boxi (31. Aug 2007)

Genau das Wars... zudem habe ich noch den Boundle Pfad falsch geschrieben, was hier aber nicht erkennbar ist. Danke vielmals für den Tipp


----------

