Fileupload simple primefaces - java.lang.NullPointerException - Ler arquivo .txt

Olá galera, tudo bom?

basicamente o que estou tentando/preciso fazer é pegar um arquivo .txt dinamicamente e lê-lo.
Pensei em fazer isso usando o componente fileUpload simple (http://www.primefaces.org/showcase/ui/fileUploadSimple.jsf) do primefaces, apenas para pegar o caminho do arquivo .txt que eu quero para poder ler. (Aceito sugestões para outra solução).
Tentei seguir o exemplo do site do primefaces, mas o que acontece é que está vindo nulo o caminho, não está pegando o nome do arquivo.
Se alguém puder me dar uma mão =)

private UploadedFile file;
	
public UploadedFile getFile() {
	return file;
}
	
public void setFile(UploadedFile file) {
	this.file = file;
}
	
	public void le_arquivo (){
		
		String filename = getFile().getFileName(); //AQUI QUE DA O ERRO, VEM NULL
		System.out.println("nome: " + filename);
		
		File arquivo = new File("c:\\ttt.txt"); //ESTOU COLOCANDO MANUAL PRA TESTAR, MAS AQUI EU QUERIA COLOCAR O FILENAME QUE PEGASSE DO COMPONENTE
		System.out.println("nome: " + arquivo);
		
        try {              
          FileReader reader = new FileReader(arquivo);  
          BufferedReader input = new BufferedReader(reader);  
          String linha;
          
          int i=0;
          
          List<String> linhas = new ArrayList<String>();    
          List<String> listfits = new ArrayList<String>();    
          
          while ((linha = input.readLine()) != null) {  
        	 linhas.add(linha);
          }
              
        	  
          }
          input.close();  

          } catch (IOException ioe) {  
        	System.out.println(ioe);  
          } 
		
	}

erro:

Mar 30, 2013 3:12:58 PM javax.faces.event.MethodExpressionActionListener processAction
Grave: 'java.lang.NullPointerException' recebido ao invocar escuta de ação '#{cadastraDiretorio_ImagemBean.le_arquivo()}' para o componente 'j_idt70'
Mar 30, 2013 3:12:58 PM javax.faces.event.MethodExpressionActionListener processAction
Grave: java.lang.NullPointerException
	at astronomia.bean.CadastraDiretorio_ImagemBean.le_arquivo(CadastraDiretorio_ImagemBean.java:75)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:264)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
	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:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)

Mar 30, 2013 3:12:58 PM com.sun.faces.context.ExceptionHandlerImpl log
Grave: JSF1073: javax.faces.event.AbortProcessingException obtido durante o processamento de INVOKE_APPLICATION 5: UIComponent-ClientId=form1:j_idt70, Message=/admin/administrador.xhtml @106,124 actionListener="#{cadastraDiretorio_ImagemBean.le_arquivo()}": java.lang.NullPointerException
Mar 30, 2013 3:12:58 PM com.sun.faces.context.ExceptionHandlerImpl log
Grave: /admin/administrador.xhtml @106,124 actionListener="#{cadastraDiretorio_ImagemBean.le_arquivo()}": java.lang.NullPointerException
javax.faces.event.AbortProcessingException: /admin/administrador.xhtml @106,124 actionListener="#{cadastraDiretorio_ImagemBean.le_arquivo()}": java.lang.NullPointerException
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:182)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
	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:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NullPointerException
	at astronomia.bean.CadastraDiretorio_ImagemBean.le_arquivo(CadastraDiretorio_ImagemBean.java:75)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:264)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148)
	... 28 more

Coloca teu xhtml. Veja no modo debug se pelo menos até o getFile vem.

xhtml

<h:form id="form1">
	<h:outputLabel value="Escolha o arquivo .txt :" />
	<p:fileUpload id="fup" value="#{cadastraDiretorio_ImagemBean.file}" mode="simple"></p:fileUpload>
	<br />
	<p:commandButton actionListener="#{cadastraDiretorio_ImagemBean.le_arquivo()}" value="Salvar imagens"></p:commandButton>
	<br />
</h:form>

rodei o debug… e em nenhum momento ele ta pegando o caminho do arquivo… =/

Não é nem o caminho, é o File mesmo, tenta dar so o getFile, pra ver se ele vem.

Mas tipo, vc não está implementando isso errado? O fileUpload, tem um parametro que é o fileUploadListener, onde ele sim, chamará o metodo java passando o arquivo. olhe o exemplo: http://www.primefaces.org/showcase/ui/fileUploadSingle.jsf

mas de uma olhada nesse: http://www.primefaces.org/showcase/ui/fileUploadSimple.jsf

é um pouco diferente… é nesse que to me baseando e tentando…
mas vou ver se consigo alguma coisa com esse “mais bunitinho” do primefaces

https://github.com/lsjunior/tickettoride/blob/master/tickettoride-web/src/main/webapp/access/certificate-upload.xhtml

https://github.com/lsjunior/tickettoride/blob/master/tickettoride-web/src/main/java/br/net/woodstock/tickettoride/web/access/CertificateBean.java

Lembre-se de colocar o commons-fileupload e suas dependências no projeto.

Erro muito comum, não é a primeira vez que vejo aqui no GUJ.

O problema é que no modo simples, o upload não funciona por ajax, veja no showcase que a tag ajax no p:commandButton tem valor false

O próprio Cagatay diz nesse post que só é possível fazer upload de arquivos via ajax no modo avançado

Olá amigos, desculpa a demora para responder…

mas enfim, tentei sua sugestão Rodrigo, até tinha notado que estava com ajax=false no site do primefaces e tinha testado assim, mas como não tinha funcionado, tirei o ajax=false. Mas vou deixar agora, porém continuo com o problema.

Outra coisa que eu gostaria de frisar, é que para mim, fazer o upload do arquivo não é importante! O que eu quero mesmo é poder ler um arquivo .txt (pois preciso trabalhar com o seu conteudo para guardar no banco posteriormente), independentemente de onde ele esteja, ou seja, fazer isso dinamicamente, e não precisar colocar o caminho deste arquivo fixo no código. Inclusive, se eu puder fazer isso sem precisar salvar (fazer upload) este arquivo no banco, melhor ainda!!!

Alguma sugestão? =(