# JSF Formularwert null



## prinzessin88 (8. Mrz 2011)

Hallo!
Ich habe einen Fehler im compiler stehen mit dem ich ncihts anfangen kann ich habe schon alles überprüft, aber der Fehler tritt weiterhin auf. Kann mir jemand helfen?


```
ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
org.apache.jasper.el.JspPropertyNotFoundException: /sites/intern_login_anlegen.jsp(96,10) '#{portal.user.vorname}' Target Unreachable, 'user' returned null
	at org.apache.jasper.el.JspValueExpression.getType(JspValueExpression.java:61)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:92)
	at javax.faces.component.UIInput.getConvertedValue(UIInput.java:942)
	at javax.faces.component.UIInput.validate(UIInput.java:868)
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1072)
	at javax.faces.component.UIInput.processValidators(UIInput.java:672)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
	at javax.faces.component.UIForm.processValidators(UIForm.java:234)
	at org.ajax4jsf.component.AjaxViewRoot$3.invokeContextCallback(AjaxViewRoot.java:447)
	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:240)
	at org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:463)
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:71)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:341)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Unknown Source)
```


----------



## Tomate_Salat (8. Mrz 2011)

#{portal.user} ist bei dir null und du versuchst daraus einen Wert (vorname) zu lesen => Exception

Was hier genau schief läuft, dass user null ist kann man nur raten, oder du postest relevanten Quellcode.


----------



## prinzessin88 (8. Mrz 2011)

Das hier ist das Formular:


```
<!-- CONTENT anfang -->
		   				<t:div id="content" styleClass="i_content">
		    				<t:div id="text" styleClass="i_text">
								<h:panelGrid columns="3">
										
									 	<h:outputLabel for="Vorname" value="#{msg.portal_vorname}"/>
										<h:inputText value="#{portal.user.vorname}" id="Vorname"/>
										<h:outputText value=" " rendered=""/>
										<h:outputText value=" "/>					

										<h:outputLabel for="Nachname" value="#{msg.portal_nachname}"/>
										<h:inputText value="#{portal.user.nachname}" id="Nachname"/>
										<h:outputText value=" " rendered=""/>
										<h:outputText value=" "/>
	
										<h:outputLabel for="Abteilung" value="#{msg.portal_abteilung}"/>
										<h:inputText value="#{portal.user.abteilung}" id="Abteilung"/>
										<h:outputText value=" " rendered=""/>
										<h:outputText value=" "/> 

										<h:outputLabel for="Username" value="#{msg.portal_username}"/>
										<h:inputText value="#{portal.user.username}" id="Username"/>
										<h:outputText id="errorUsername" value="" rendered="" styleClass="i_fehler"/>
										<h:outputText value=" " rendered=""/>

										<h:outputLabel for="Passwort" value="#{msg.portal_passwort}"/>
										<h:inputSecret value="#{portal.user.userPWD}" id="Passwort"/>
										<h:outputText id="errorPasswort" value="" rendered="" styleClass="i_fehler"/>
										<h:outputText value=" " rendered=""/>

										<h:outputLabel for="Passwort2" value="#{msg.portal_passwort2}"/>
										<h:inputSecret value="#{portal.user.userPWD2}" id="Passwort2"/>
										<h:outputText id="errorPasswort2" value="" rendered="" styleClass="i_fehler"/>
										<h:outputText value=" " rendered=""/>

										<h:outputLabel for="Id" value="#{msg.portal_id}"/>
										<h:inputText  value="#{portal.user.eclass_company_id}" id="Id"/>
										<h:outputText value=" " rendered=""/>
										<h:outputText value=" "/>
										</h:panelGrid>
											
										<h:panelGrid columns="1">
												<h:commandButton id="abschicken" value="#{msg.portal_anmeldung_abschicken}" action="#{portal.updateLogin}">
													<h:inputHidden value=""/>
												</h:commandButton>
										</h:panelGrid>
											
											
											
									<%-- 		<h:panelGrid>
											<h:commandButton value="abschicken" action="#{portal.updateLogin}">
												
											</h:commandButton>
											<h:inputHidden value=""/>
										</h:panelGrid>	--%>
									</t:div>
			    				</t:div>
								<!-- CONTENT ende -->
```

Das ist der PortalHandler:


```
public void updateLogin()
	
		if(user != null)
		{
			
				user = MainUser.validLogin(user);
				if(user.isValid())
				{
					user = null;
					userList = MainUser.getUserData();
					
				}
				
		}
		
		
	}
	
	
	public User getUser()
	{
		return user;
	}

	public void setUser(User user)
	{
		this.user = user;
	}
```

Das ist die MainUser:


```
public static User validLogin(User user)
	{
		user = checkLogin(user);
		
		if(user.isValid())
		{
			ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
			DBConnection dbHandler = new DBConnection(ec);
			
			try
			{
				dbHandler.openConnection("MainUser.validLogin()");
				

				String sql1= "INSERT INTO `Tabbelle` (spalte1, spalte2, spalte3, spalte4, userPWD)" +
				   "VALUES ('" + user.getVorname() + "', '" +
				   user.getNachname() + "', '" +
				   user.getAbteilung() + "', '" +
				   user.getUsername() + "', '" +
				   user.getUserPWD() + "') " +
				   ";";
				
				

				String sql6 = "UPDATE `tabelle`" +
						"SET `spalte` = '"+user.getEclass_company_id()+"'" +
						"SET `spalte` = '"+user.getLastUserId()+"'" +
						"WHERE `spalte` = '"+user.getLastUserId()+"'";
				
				dbHandler.executeInsert(sql1);
				
				ResultSet rs = dbHandler.executeSelect("SELECT LAST_INSERT_ID();");
				if(rs.next())
				{
					int lastUserId = rs.getInt("LAST_INSERT_ID()");
					
					user.setLastUserId(lastUserId); 
				
				}
				
				dbHandler.executeUpdate(sql6);
				
				
			}
			catch (Exception e) {
				// TODO: handle exception
			}
			finally
			{
				dbHandler.closeConnection("MainUser.validLogin()");
			}
		}
		return user;
	}
	
	private static User checkLogin(User user)
	{
		user.resetValid();
		user.isValid();
		
		if(user.getUsername()== null || user.getUsername().equals("") || user.getUsername().equals("null"))
		{
			user.setValidUsername();
		}
		
		if (user.getUserPWD() == null || user.getUserPWD().equals("") || user.getUserPWD().equals("null"))
		{
			user.setValidUserPWD();
		} 
		if (user.getUserPWD2() == null || user.getUserPWD2().equals("") || user.getUserPWD2().equals("null"))
		{
			user.setValidUserPWD2();
		} 
		if (!user.getUserPWD().equals(user.getUserPWD2()))
		{
			user.setValidUserPWDungleich();
		} 
		if (user.getEclass_company_id()< 0)
		{
			user.setValidEclassCompanyId();
		}
		return user;
	}
```


----------



## Tomate_Salat (8. Mrz 2011)

ohne alles gelesen zu haben, aber was mir auffällt: wieso setzt du user=null wenn er valid ist?


----------



## prinzessin88 (8. Mrz 2011)

also ich habs rausgenommen bleibt der selbe Fehler trotzdem und hat auch keinen sinn mehr ergeben warum das da drin steht.


----------



## Tomate_Salat (8. Mrz 2011)

hab noch nicht viel mit jsf gearbeitet, aber setze vllt mal um dein formular:
[c]<h:form><!-- DEIN FORMULAR --></h:form>[/c]
und teste es dann mal.


----------



## prinzessin88 (8. Mrz 2011)

keine Änderung der Fehlermeldung


----------



## Tomate_Salat (8. Mrz 2011)

ups, ja denkfehler, dass hast du wohl schon beim ersten laden der Seite, dass habe ich nicht beachtet. [c]getUser()[/c] wird da wohl null zurückliefern. Prüfe mal ab, ob user==null ist (in der getUser()) und wenns zutrifft: erstelle dir mal ein leeres neues User-Objekt und lass dieses zurückgeben.


----------



## prinzessin88 (9. Mrz 2011)

Hi!
also der user ist null und ich habe dann auch ein neues objekt erstellt.
dann tritt halt nciht der andere fehler auf aber es steht halt das user == null und dann funktioniert es nicht.


----------



## Tomate_Salat (9. Mrz 2011)

setz doch im user-objekt ein flag, welches dir angibt, dass der Benutzer noch nicht zulässig/neu angelegt wurde und prüfe dieses ab.


----------



## prinzessin88 (9. Mrz 2011)

Hi!
Also es funktioniert jetzt habe einfach oben eine neues Objekt erzeugt von User und dann geht das.
Dankeschön für die Hilfe.


----------

