Dlaczego po kliknięciu na Dodaj dostaję błąd?

0

Koledzy co moze byc nie tak,że po kliknieciu na dodaj dostaje bład - 3h mecze sie juz z tym a pewnie to dla Was to oczywisty blad. Ponizej bledu wrzucam mojego beana oraz xml:

 
javax.el.PropertyNotFoundException: /Welcome.xhtml @15,39 value="#{user.login}": Target Unreachable, identifier 'user' resolved to null
	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
	at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1046)
	at javax.faces.component.UIInput.validate(UIInput.java:976)
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1249)
	at javax.faces.component.UIInput.processValidators(UIInput.java:712)
	at javax.faces.component.UIForm.processValidators(UIForm.java:253)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1195)
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'user' resolved to null
	at org.apache.el.parser.AstValue.getTarget(AstValue.java:98)
	at org.apache.el.parser.AstValue.getType(AstValue.java:82)
	at org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:172)
	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98)
	... 31 more

maj 27, 2015 8:04:56 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/LottoSimulation] threw exception [/Welcome.xhtml @15,39 value="#{user.login}": Target Unreachable, identifier 'user' resolved to null] with root cause
javax.el.PropertyNotFoundException: Target Unreachable, identifier 'user' resolved to null
	at org.apache.el.parser.AstValue.getTarget(AstValue.java:98)
	at org.apache.el.parser.AstValue.getType(AstValue.java:82)
	at org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:172)
	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
	at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1046)
	at javax.faces.component.UIInput.validate(UIInput.java:976)
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1249)
	at javax.faces.component.UIInput.processValidators(UIInput.java:712)
	at javax.faces.component.UIForm.processValidators(UIForm.java:253)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1195)
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

@ManagedBean(name = "gameBean")
@Service
@SessionScoped
public class GameBean implements GameBeanInterface {

	@Autowired
	private GameServiceInterface game;

	


	@Override
	public void addUser(User user) {
		user = new User();
		game.addUser(user);
		
	}




	@Override
	public String showText() {
		// TODO Auto-generated method stub
		return "CZY TO WOGOLE DZIALA";
	}

}

 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core">

<ui:composition template="/tamplate.xhtml">

	<ui:define name="content">

		<h1>Dodaj pracownika</h1>
		<h:form>
			<h:inputText value="#{user.login}"></h:inputText>
			<h:inputText value="#{user.sex}"></h:inputText>
		<h:commandButton action="#{gameBean.addUser}"></h:commandButton>
		</h:form>

	</ui:define>

</ui:composition>
</html>

0

Masz elementy dwóch różnych konterów: kontenera Spring i kontenera JSF. Nie powinieneś jednocześnie rejestrować tego jako service spring i jsf managed bean. To obiekt zarządzany przez dwa różne kontenery (skomplikowane i może się zepsuć).

Ogarnij jak działa facesELResolver w faces-config.xml:

    <application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
    </application>

Service springowy wstrzyknij jako JSF Managed Bean (za pomocą EL, pamiętaj o setterze):
http://www.mkyong.com/jsf2/injecting-managed-beans-in-jsf-2-0/

Jeśli nie musisz się meczyć ze Springiem radzę migrować to do CDI/JEE jeśli chcesz JSF (mniej problemów).

0

Czyli mieszanie springa z JSF nie jest dobrym pomysłem. A w jaki sposób najłatwiej połącze JSF z baza danych. Poszukuje jakiegos tutka lub gotowego szkieletu żebym podłapał jak działa JSF z JPA (bo pewnie skoro standard JavaEE to JPA bedzie najlepsza opcja ?)

0

Możesz użyć EJB3 i JPA2. Działa bardzo podobnie jak repozytorium springowe z JPA. Korzyść taka, że masz ułatwione wykorzystanie CDI w JSF. Jeśli chcesz możesz używać legacy JSF Managed Beans i wstrzykiwać springowe repozytorium tak jak wyżej napisałem (przez EL). Jest wiele sposobów na osiągniecie tego samego.

JSF Managed Bean może być lepszym wyborem jak nie masz serwera aplikacyjnego (trzeba coś na szybko zrobić na Tomcat / Jetty).

1 użytkowników online, w tym zalogowanych: 0, gości: 1