Upload de arquivos JSF + tomahawk

0 respostas
fnandos

Salve pessoal, estava tentando fazer um upload de arquivo com jsf e com o tomahawk da Apache mas sempre me deparo com a seguinte exceção:

SEVERE: Received 'java.lang.NullPointerException' when invoking action listener '#{DocumentoControl.save}' for component 'j_id_id56'
SEVERE: java.lang.NullPointerException
	at pacote.DocumentoControl.save(DocumentoControl.java:38)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.sun.el.parser.AstValue.invoke(AstValue.java:187)
	at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:88)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:77)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:746)
	at javax.faces.component.UICommand.broadcast(UICommand.java:368)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	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.servletService(ApplicationFilterChain.java:427)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:315)
	at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
	at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:288)
	at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:647)
	at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:579)
	at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:831)
	at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
	at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
	at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
	at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
	at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)

o meu jsp está assim:

<h:form enctype="multipart/form-data">
					<h:panelGrid columns="3">
						<h:outputText value="Tipo de Documento" styleClass="" />
						<h:inputText id="tpdCodigo" required="true"
							binding="#{DocumentoControl.inputTpdDocumento}"
                            styleClass="inputsForms">
						</h:inputText>
						<h:message for="tpdCodigo" />
						
						<h:outputText value="Arquivo" styleClass="" />
						<t:inputFileUpload 
						   id="file"
						   storage="file"						   
						   value="#{DocumentoControl.inputDocumento}"
						/>
						<h:message for="file"/>

					</h:panelGrid>
					<p><h:commandButton value="Salvar"
						actionListener="#{DocumentoControl.save}"
						action="#{DocumentoControl.act}" 
						styleClass="" /> 
					<h:commandButton
						value="Cancelar" 
						immediate="true"
						onclick="return confirm('Deseja cancelar o tipo de documento sendo editado?')"
						action="cancelar" 
						styleClass="" />
					</p>
				</h:form>

e no backing bean no metodo save

System.out.print("Entrou aqui");
		// obtem os valores dos componentes
		int tpdCodigo = Integer.parseInt((String) getInputTpdDocumento().getValue());		
	
		File arq = new File(getInputDocumento().getName());
		BufferedInputStream bis = new BufferedInputStream(getInputDocumento().getInputStream());
		FileOutputStream fos = new FileOutputStream(arq);
		
		byte[] buffer = new byte[1024];
		int count;
		while ((count = bis.read(buffer)) > 0)
		fos.write(buffer, 0, count);
		
		bis.close();
		fos.close();
		System.out.print("Passou pela leitura do arquivo");

sendo que input documento é do tipoUploadedFile.

Configurei também o web.xml com o seguinte:

<filter>
		<filter-name>extensionsFilter</filter-name>
		<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
		<init-param>
			<param-name>uploadMaxFileSize</param-name>
			<param-value>100m</param-value>
		</init-param>
		<init-param>
			<param-name>uploadThresholdSize</param-name>
			<param-value>100k</param-value>
		</init-param>
	</filter>

O que acontece é que ele não está pegando o inputDocumento, o que poderia estar errado?

Criado 30 de setembro de 2009
Respostas 0
Participantes 1