(Help) JSF + Facelets = Erro no submit

2 respostas
felipempantoja

Olá pessoal, estou com um problema ao trabalhar com facelets, pois usando somente JSF tudo funciona normal.
Montei aqui uma aplicação de teste, onde eu tenho dois campos com nomes, e é feita uma comparação entre eles, se for igual, vai pra página "sucesso.xhtml" e se for diferente vai pra "erro.xhtml", porém, quando eu dou o submit no form, dá erro:

WARNING: executePhase(APPLY_REQUEST_VALUES 2,com.sun.faces.context.FacesContextImpl@1e09eab) threw exception javax.faces.FacesException at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:109) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:248) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244) 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:141) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281) 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:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException at javax.faces.component.UIComponentBase.getRenderer(UIComponentBase.java:1194) at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:774) at javax.faces.component.UIForm.processDecodes(UIForm.java:192) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:989) at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:494) at org.ajax4jsf.component.AjaxViewRoot.access$001(AjaxViewRoot.java:57) at org.ajax4jsf.component.AjaxViewRoot$1.invokeRoot(AjaxViewRoot.java:260) at org.ajax4jsf.context.JsfOneOneInvoker.invokeOnRegionOrRoot(JsfOneOneInvoker.java:56) at org.ajax4jsf.context.AjaxContextImpl.invokeOnRegionOrRoot(AjaxContextImpl.java:170) at org.ajax4jsf.component.AjaxViewRoot.processDecodes(AjaxViewRoot.java:276) at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:101) ... 19 more 25/01/2008 12:13:05 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet Faces Servlet threw exception java.lang.NullPointerException at javax.faces.component.UIComponentBase.getRenderer(UIComponentBase.java:1194) at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:774) at javax.faces.component.UIForm.processDecodes(UIForm.java:192) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:989) at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:494) at org.ajax4jsf.component.AjaxViewRoot.access$001(AjaxViewRoot.java:57) at org.ajax4jsf.component.AjaxViewRoot$1.invokeRoot(AjaxViewRoot.java:260) at org.ajax4jsf.context.JsfOneOneInvoker.invokeOnRegionOrRoot(JsfOneOneInvoker.java:56) at org.ajax4jsf.context.AjaxContextImpl.invokeOnRegionOrRoot(AjaxContextImpl.java:170) at org.ajax4jsf.component.AjaxViewRoot.processDecodes(AjaxViewRoot.java:276) at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:248) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244) 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:141) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281) 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:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)
principal.xhtml
<ui:composition template="/layout.xhtml">
	
	<ui:define name="conteudo">
		<h:form>
			<h:outputText value="Nome 1: "/>
			&lt;h:inputText value="#{usuario.nome}"/&gt;<br/>
			
			&lt;h:outputText value="Nome 2: "/&gt;
			&lt;h:inputText value="#{usuario.nome2}"/&gt;<br/>
			
			&lt;h:commandButton action="#{usuario.compara}" value="compara"/&gt;
		&lt;/h:form&gt;
	&lt;/ui:define&gt;

&lt;/ui:composition&gt;
faces-config.xml
&lt;faces-config&gt;
	&lt;managed-bean&gt;
		&lt;managed-bean-name&gt;usuario&lt;/managed-bean-name&gt;
		&lt;managed-bean-class&gt;bean.Usuario&lt;/managed-bean-class&gt;
		&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;
	&lt;/managed-bean&gt;
	
	&lt;navigation-rule&gt;
		&lt;from-view-id&gt;/formulario.xhtml&lt;/from-view-id&gt;
		&lt;navigation-case&gt;
			&lt;from-outcome&gt;sucesso&lt;/from-outcome&gt;
			&lt;to-view-id&gt;/sucesso.xhtml&lt;/to-view-id&gt;
		&lt;/navigation-case&gt;
		&lt;navigation-case&gt;
			&lt;from-outcome&gt;erro&lt;/from-outcome&gt;
			&lt;to-view-id&gt;/erro.xhtml&lt;/to-view-id&gt;
		&lt;/navigation-case&gt;
	&lt;/navigation-rule&gt;

	&lt;application&gt;
		&lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-handler&gt;
	&lt;/application&gt;
&lt;/faces-config&gt;
Usuario.java
public String compara()
	{
		if(nome.equalsIgnoreCase(nome2))
			return "sucesso";
		else
			return "erro";
	}

Jars utilizados:

commons-benutils.jar
commons-collections.jar
commons-digester.jar
commons-logging.jar
jsf-api.jar
jsf-facelets.jar
jsf-impl.jar
jsf-tlds.jar
jstl.jar
standard.jar

alguém pode me ajudar a resolver esse problema?

2 Respostas

felipempantoja

Pessoal, eu não comentei mas tb tinha os jars do richfaces no meu classpath, agora testando, removi eles e as declarações no web.xml, funcionou na boa agora, o problema é que quero integrar o richfaces na aplicação e não estou entendendo o porque do erro.

web.xml
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&gt;
	&lt;display-name&gt;appteste&lt;/display-name&gt;
	&lt;context-param&gt;
		&lt;param-name&gt;javax.faces.CONFIG_FILES&lt;/param-name&gt;
		&lt;param-value&gt;/WEB-INF/faces-config.xml&lt;/param-value&gt;
	&lt;/context-param&gt;
	&lt;context-param&gt;
		&lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
		&lt;param-value&gt;.xhtml&lt;/param-value&gt;
	&lt;/context-param&gt;
	&lt;context-param&gt;
		&lt;param-name&gt;facelets.REFRESH_PERIOD&lt;/param-name&gt;
		&lt;param-value&gt;2&lt;/param-value&gt;
	&lt;/context-param&gt;
	&lt;context-param&gt;
		&lt;param-name&gt;facelets.DEVELOPMENT&lt;/param-name&gt;
		&lt;param-value&gt;true&lt;/param-value&gt;
	&lt;/context-param&gt;
	&lt;context-param&gt;
		&lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
		&lt;param-value&gt;client&lt;/param-value&gt;
	&lt;/context-param&gt;
	&lt;context-param&gt;
		&lt;param-name&gt;com.sun.faces.validateXml&lt;/param-name&gt;
		&lt;param-value&gt;true&lt;/param-value&gt;
	&lt;/context-param&gt;
	&lt;context-param&gt;
		&lt;param-name&gt;com.sun.faces.verifyObjects&lt;/param-name&gt;
		&lt;param-value&gt;true&lt;/param-value&gt;
	&lt;/context-param&gt;
	&lt;context-param&gt;
		&lt;param-name&gt;org.richfaces.SKIN&lt;/param-name&gt;
		&lt;param-value&gt;emeraldTown&lt;/param-value&gt;
	&lt;/context-param&gt;
	&lt;filter&gt;
		&lt;display-name&gt;RichFaces Filter&lt;/display-name&gt;
		&lt;filter-name&gt;richfaces&lt;/filter-name&gt;
		&lt;filter-class&gt;org.ajax4jsf.Filter&lt;/filter-class&gt;
	&lt;/filter&gt;
	&lt;filter-mapping&gt;
		&lt;filter-name&gt;richfaces&lt;/filter-name&gt;
		&lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
		&lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;
		&lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;
		&lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt;
	&lt;/filter-mapping&gt;
	&lt;listener&gt;
		&lt;listener-class&gt;
			com.sun.faces.config.ConfigureListener
		&lt;/listener-class&gt;
	&lt;/listener&gt;
	&lt;servlet&gt;
		&lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
		&lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
		&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
	&lt;/servlet&gt;
	&lt;servlet-mapping&gt;
		&lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
		&lt;url-pattern&gt;*.jsf&lt;/url-pattern&gt;
	&lt;/servlet-mapping&gt;
        &lt;servlet-mapping&gt;
		&lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
		&lt;url-pattern&gt;*.xhtml&lt;/url-pattern&gt;
	&lt;/servlet-mapping&gt;

	&lt;login-config&gt;
		&lt;auth-method&gt;BASIC&lt;/auth-method&gt;
	&lt;/login-config&gt;
&lt;/web-app&gt;

Será que tem algo errado no meu web.xml? =/

felipempantoja

Removi o context param do web.xml:

<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>

e funcionou, mas sinceramente não sei pra que serve isso, já que o jboss tools que gerou isso pra mim.

Criado 25 de janeiro de 2008
Ultima resposta 25 de jan. de 2008
Respostas 2
Participantes 1