RichFaces 3.3.2 + MyFaces-tomahawk (rich:fileUpload)

2 respostas
R

Pessoal,

Estou precisando utilizar o componente rich:fileUpload.
Porem, quando tento fazer o upload do arquivo está gerando um erro:

Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
	at org.richfaces.renderkit.FileUploadRendererBase.doDecode(FileUploadRendererBase.java:138)
	at org.ajax4jsf.renderkit.RendererBase.decode(RendererBase.java:75)
	at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:784)
	at javax.faces.component.UIInput.decode(UIInput.java:725)
	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1026)
	at javax.faces.component.UIInput.processDecodes(UIInput.java:639)
	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1021)
	at org.ajax4jsf.component.UIAjaxForm.processDecodes(UIAjaxForm.java:63)
	at org.ajax4jsf.component.AjaxViewRoot$1.invokeContextCallback(AjaxViewRoot.java:395)
	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:235)
	at org.ajax4jsf.component.AjaxViewRoot.processDecodes(AjaxViewRoot.java:412)
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
	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:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:385)
	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 org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:246)
	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:301)
	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:191)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
	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:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Thread.java:595)
19/02/2010 02:09:29 org.ajax4jsf.webapp.BaseXMLFilter doXmlFilter
ERROR: Exception in the filter chain 
javax.servlet.ServletException
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
	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:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:385)
	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 org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:246)
	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:301)
	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:191)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
	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:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.NullPointerException
	at org.richfaces.renderkit.FileUploadRendererBase.doDecode(FileUploadRendererBase.java:138)
	at org.ajax4jsf.renderkit.RendererBase.decode(RendererBase.java:75)
	at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:784)
	at javax.faces.component.UIInput.decode(UIInput.java:725)
	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1026)
	at javax.faces.component.UIInput.processDecodes(UIInput.java:639)
	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1021)
	at org.ajax4jsf.component.UIAjaxForm.processDecodes(UIAjaxForm.java:63)
	at org.ajax4jsf.component.AjaxViewRoot$1.invokeContextCallback(AjaxViewRoot.java:395)
	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:235)
	at org.ajax4jsf.component.AjaxViewRoot.processDecodes(AjaxViewRoot.java:412)
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
	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)
	... 25 more

Fiz várias pesquisa tanto aqui quanto em outros fóruns, mas não cheguei a uma resposta.
A única coisa que descobri é que existe uma incompatibilidade entre o richFaces e o MyFaces.

Tem como utilizar o rich:fileUpload juntamente com o myFaces?

Se eu comentar a parte do ExtensionFilter do myfaces, o rich:fileUpload funciona, só que eu não posso comentar.
Eu queria continuar usando os dois.

Tem alguma forma de fazer isso?

abaixo segue a configuração do meu web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">

	<display-name>webcond</display-name>

	<!-- JSF Configuration -->
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
	</servlet-mapping>
	<context-param>
		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
		<param-value>server</param-value>
	</context-param>
	

	<!-- Facelets Configuration-->
	<context-param>
		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
		<param-value>.xhtml</param-value>
	</context-param>

	<!-- Weblets Configuration-->
	<context-param>
		<param-name>weblets.CONFIG_FILES</param-name>
		<param-value>weblets-config.xml</param-value>
	</context-param>

	<servlet>
		<servlet-name>Weblets Servlet</servlet-name>
		<servlet-class>net.java.dev.weblets.WebletsServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>Weblets Servlet</servlet-name>
		<url-pattern>/weblets/*</url-pattern>
	</servlet-mapping>

	<!-- MyFaces Configuration-->
	<filter>
		<filter-name>MyFacesExtensionsFilter</filter-name>
		<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
		<init-param>
			<param-name>uploadMaxFileSize</param-name>
			<param-value>20m</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>MyFacesExtensionsFilter</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
	</filter-mapping>
	<filter-mapping>
		<filter-name>MyFacesExtensionsFilter</filter-name>
		<url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>MyFacesExtensionsFilter</filter-name>
		<url-pattern>*.jsf</url-pattern>
	</filter-mapping>

	<!-- Demoiselle Configuration-->
	<listener>
		<listener-class>
			br.gov.framework.demoiselle.web.init.WebInitializationServletContextListener</listener-class>
	</listener>
	<listener>
		<listener-class>
			br.gov.framework.demoiselle.web.security.WebSecurityServletRequestListener</listener-class>
	</listener>
	<listener>
		<listener-class>
			br.gov.framework.demoiselle.web.transaction.WebTransactionServletRequestListener</listener-class>
	</listener>
	<servlet>
		<servlet-name>WebRedirectServlet</servlet-name>
		<servlet-class>
			br.gov.framework.demoiselle.web.redirect.WebRedirectServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>WebRedirectServlet</servlet-name>
		<url-pattern>/redirect</url-pattern>
	</servlet-mapping>
	
	
	<context-param>
		<param-name>org.richfaces.CONTROL_SKINNING</param-name>
		<param-value>enable</param-value>
	</context-param>
	<context-param>
		<param-name>org.richfaces.SKIN</param-name>
		<!-- <param-value>emeraldTown</param-value>-->
		<!-- <param-value>classic</param-value> -->
		<!-- <param-value>blueSky</param-value> -->
		<!-- <param-value>ruby</param-value> -->
		<!-- <param-value>wine</param-value> -->
		<!-- <param-value>deepMarine</param-value> -->
		<!-- <param-value>japanCherry</param-value> -->
		<!-- <param-value>plain</param-value> -->
		<param-value>#{skinMB.skin}</param-value>
	</context-param>
	
	<!-- Rich Faces Configuration-->
	<filter>
		<display-name>Ajax4jsf Filter</display-name>
		<filter-name>ajax4jsf</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
		<init-param>
			<param-name>createTempFiles</param-name>
			<param-value>false</param-value>
		</init-param>
		<init-param>
			<param-name>maxRequestSize</param-name>
			<param-value>10485760</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>ajax4jsf</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
		<dispatcher>ERROR</dispatcher>
	</filter-mapping>

	<!-- Demoiselle Scheduler Configuration-->
	<listener>
		<listener-class>
			br.gov.component.demoiselle.scheduler.web.SchedulerInitializationServletContextListener</listener-class>
	</listener>

	<!-- Pages Configuration -->
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<error-page>
		<error-code>404</error-code>
		<location>/public/pages/error/404.jsp</location>
	</error-page>

	<error-page>
		<error-code>500</error-code>
		<location>/public/pages/error/500.jsp</location>
	</error-page>

	<error-page>
		<exception-type>java.lang.Throwable</exception-type>
		<location>/public/pages/error/global.jsp</location>
	</error-page>

	<!-- Security Configuration -->
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>private</web-resource-name>
			<description>private resources</description>
			<url-pattern>/private/*</url-pattern>
		</web-resource-collection>
		<auth-constraint>
			<role-name>*</role-name>
		</auth-constraint>
	</security-constraint>

	<login-config>
		<auth-method>FORM</auth-method>
		<form-login-config>
			<!--
				<form-login-page>/public/pages/security/login.jsp</form-login-page>
			-->
			<form-login-page>/public/pages/security/login.jsp</form-login-page>
			<form-error-page>/public/pages/error/acess.jsp</form-error-page>
		</form-login-config>
	</login-config>

	<security-role>
		<role-name>*</role-name>
	</security-role>

</web-app>

Valeu pela ajuda!

2 Respostas

B

Olá!

Dê uma olhada em http://www.marcossousa.com/2008/04/28/incompatibilidades-myfaces-tomahawk-e-richfaces-32/

Pessoal lá também passou por isso.

R

bhfaria:
Olá!

Dê uma olhada em http://www.marcossousa.com/2008/04/28/incompatibilidades-myfaces-tomahawk-e-richfaces-32/

Pessoal lá também passou por isso.

Valeu pela dica!!!

E foi la mesmo que eu consegui resolver.

Pode ver que o ultimo comentário antes do Marcos é meu.

Depois desse comentário a gente trocou alguns e-mail e acabei resolvendo o problema daquela forma mesmo.

Só tive que me preocupar com uma coisa: O filtro do RichFaces deve ser declarado após o filtro do Myfaces no web.xml.

Criado 19 de fevereiro de 2010
Ultima resposta 22 de fev. de 2010
Respostas 2
Participantes 2