JSF FileUpload

4 respostas
P

E ai, pessoal.

Não consigo encontrar solução, nem alguém com o mesmo problema que eu.
Estou utilizando o componente do FileUpload em JSF, utilizando a biblioteca primefaces-3.4.2.jar
Quando utilizava o componente se o atributo auto, na primeira vez que a página era carregada o componente não aparecia. Eu precisava recarregar o navegador para que o componente aparecesse.
Acrescentei o atributo auto e o componente começou a aparecer sempre, no entanto, na primeira vez que utilizo o componente, ele não faz nada (não chama o método que passei). A partir do segundo arquivo que eu faço upload o componente funciona normalmente.

Alguém tem alguma sugestão de como corrigir esse problema (se tiver como)?

Obrigada.

4 Respostas

M

Poste o código… Assim posso te ajudar…

P

Na minha página xhtml uso:

<fieldset>

<legend class=“simples”>

<h:outputText value=“Importar arquivos de períodos e eventos” style=“margin-left:15px;” />

</legend>
&lt;hr /&gt;

&lt;h:form id="formImportarPeriodo"&gt;
	&lt;p:growl id="message" sticky="false" life="10000" /&gt;
	&lt;h:outputText value="Selecione um arquivo (.txt) para importar:" style="font-size:1.1em;" /&gt;
	&lt;p:fileUpload fileUploadListener="#{importacaoBean.validarImportacaoPeriodo}" mode="advanced" dragDropSupport="false" auto="true"  
             				  update=":formImportarPeriodo:message" sizeLimit="900000000" fileLimit="1" allowTypes="/(\.|\/)(txt)$/"
             				  style="margin-top:10px;" /&gt;  
&lt;/h:form&gt;

</fieldset>

no Bean:

public void validarImportacaoPeriodo(FileUploadEvent event){

String nomeArquivo = event.getFile().getFileName();

//verifica nome do arquivo

if(!nomeArquivo.contains("-PER") && !nomeArquivo.contains("-EVE")){

//arquivo não é de período nem de evento

FacesMessage msg = new FacesMessage(Não é possível importar arquivos que não sejam de períodos ou eventos);

FacesContext.getCurrentInstance().addMessage(null, msg);

}

else{

//arquivo de período ou evento. Chama método de importação

importarArquivo(event);

}

}

e no web.xml:

<filter>

<filter-name>PrimeFaces FileUpload Filter</filter-name>

<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>PrimeFaces FileUpload Filter</filter-name>

<servlet-name>Faces Servlet</servlet-name>

<url-pattern>*.jsf</url-pattern>

</filter-mapping>

Adicionei também as bibliotecas commons-fileupload-1.3 e commons-io-2.4

Alys

É um problema parecido com o deste outro tópico? Veja se o que está descrito aí te ajuda.

Obs: sempre use as tags Code para postar códigos. Facilita a leitura :wink:

P

Na verdade o upload funciona. O problema é que logo da primeira vez que eu chamo não funciona.
Antes de eu utilizar o auto quando eu carregava a página, o componente não aparecia. Quando eu recarregava a página o componente aparecia.
Mudei o componente acrescentando o auto e o componente agora aparece. Mas a primeira vez que eu utilizo o FileUpload ele não faz nada.
A partir da segunda vez ele começa a funcionar normalmente.

Queria saber se isso é um problema do componente ou algum erro meu. Além disso, como eu posso fazer para que esse erro, caso seja do componente, não fique visível para o usuário, pois pode dar a falsa impressão de que a importação funcionou sem ter executado nada.

Dei uma olhada no tópico mas não me ajudou. =/

Criado 17 de setembro de 2013
Ultima resposta 20 de set. de 2013
Respostas 4
Participantes 3