Incompatibilidades do componente RichFaces: rich:fileUpload
Marcos Sousa | May 4, 2008Estes últimos dias estive testando o componente “rich:fileUpload“. O componente é bastante interessante, porém é bastante sensível. Encontrei incompatibilidades com componentes do próprio richfaces, do myfaces e com o seam framework.
Até o momento verifiquei que usar o componente “rich:fileUpload” dentro do componente “rich:simpleTogglePanel”. Todos os testes que eu realizei ele não chama o evento definido em fileUploadListener. Até onde eu percebi me parece que o parâmetro que o “rich:fileUpload” usa para controlar o envio dos arquivos é perdido quando ele está dentro do “rich:simpleTogglePanel“.
Outro problema do componente é a incompatibilidade da versão 3.2.0 com o Seam Framework. Seguindo um comportamento semelhante ao do problema acima o evento definido no fileUploadListener não é chamado. Pelo que eu vi no JIRA havia problemas com o ciclo de vida do Seam, porém estes problemas já foram solucionados.
Havia também problemas com o envio de diversos arquivos ao mesmo tempo. Todos estes problemas também foram corrigidos.
A dica é: se você estiver usando o Seam Framework e o RichFaces 3.20 e pensar em usar o rich:fileUpload, atualize para as versões:
Seam 2.0.2 Cr1 (ou superior)
RichFaces 3.2.1 (Sugiro pegar a versão mais recente)
API
Implementação
User Interface






Marcos,
Estamos tentando migrar para a versão 3.2.0 e simplesmente quando temos caracteres com acentuação o mesmo não funciona. Você tem alguma aplicação UTF-8 funcionando na nova versão?
Grato,
Anderson
Tem uma aplicação não tenho, mas acho que já que você tem uma aplicação que usa acentuação gráfica, o mais sensato de ser feito é mudar a codificação para iso-8859. Assim você evitará falhas com caracteres especiais.
Oi amigo estou usando o richFaces 3.2.1 e estou e estou com problema com fileUpload, quando faço o upload ele salva o arquivo não abria e ficava com um nome bem diferente, vc tem algum exemplo de upload com Bean, que possa me ajudar?
Valeu!!!
Ivonaldo,
O nome geralmente fica correto, no linux se eu não me engano só contém o nome do arquivo e no Windows ele carrega o caminho completo.
Quanto ao exemplo é o próprio exemplo do RichFaces, dê uma olhada no projeto dentro do SVN (http://anonsvn.jboss.org/repos/richfaces/tags/3.2.2.SR1/samples/fileUploadDemo).
Olá colega,
Estou usando o file upload do Rich e preciso enviar alguns parâmetros junto com o arquivo dentro de um formulário. Tenho enfrentado problemas, pois o envio do formulário trabalha de forma independente do file upload. VocÊ saberia resolver este desafio?
Obrigado!!
Wellington,
Este componente não suportar o envio de parâmetros, você terá que encontrar um meio termo neste sentido, talvez submeter estes parâmetros após enviar o arquivo.
Abraços,
Olá amigo, tudo bem?
Estou precisando fazer uma implementação de upload de fotos e queria usar o FileUpload. O problema é que estou com o seguinte erro:
Tag Library supports namespace: http://richfaces.org/rich, but no tag was defined for name: fileUpload
Uso RichFaces 3.1.5.GA Tem algum problema?
Abraços
@Thiago
O problema é simples, o FileUpload foi adicionado na versão 3.2. Basta atualizar a versão.
E ai cara,
seguinte to tenta usa o rich:fileUpload e quando eu coloco ele abaixo ele ta um pau muito bizonho.
Não entendi qual o problema e até quanto tem a ver com isso do dataTable, se vc souber me da uma luz ai valew.
segue:
java.lang.NullPointerException
at org.richfaces.renderkit.FileUploadRendererBase.initMaxFilesCount(FileUploadRendererBase.java:184)
opa deu problema ali no outro
E ai cara,
seguinte to tenta usa o rich:fileUpload e quando eu coloco ele abaixo de um dataTable ele ta um pau muito bizonho.
Não entendi qual o problema e até quanto tem a ver com isso do dataTable, se vc souber me da uma luz ai valew.
segue:
java.lang.NullPointerException
at org.richfaces.renderkit.FileUploadRendererBase.initMaxFilesCount(FileUploadRendere
@Rafael
Você está colocando o componente dentro de um h:dataTable? Se sim, tenha em mente que a lista responsável por montar a tabela deve ter o mesmo resultado durante a restauração.
A idéia é usar este componente com bastante moderação, pois ele possui certa complexidade.
cara to colocando o fileUpload apos o rich:dataTabel
tipo, quando fecho a table abaixo eu coloco ele.
ex:
ai da esse problema , testei em outra tela e com o mesmo eskema e deu tbm.
to usando o richfaces 3.3
@Rafael,
Você testou remover o dataTable para ver se funciona. Talvez é o seu componente que está configurado incorretamente. Se você estiver usando EL para a quantidade máxima de uploads, verifique se ela está retornando um número válido.
Abraços,
Bom dia. Tenho um problema no fileUpload. Estou usado o RF 3.3.0. Se eu coloco um maxFilesQuantity=”2″, carrego 2, ele desabilita o botão de adicionar arquivos. Se eu clicar no limpar, o botão de adicionar continua desabilitado. Não consigo reabilitar esse botão. Mesmo setando uma variavel no maxFilesQuantity para ser zerada na hora do limpar eu tive sucesso.
Obrigado..
cara, estou tentando usar duas vezes o componente rich:fileupload na mesma pagina, e ao executar um, ele executa os dois, não consigo executar um só, pra adicionar arquivo utilizando somente um deles, o outro executa também e adiciona um arquivo null, nao sei se me expliquei muito bem, se nao tiver entendido me fale, se puder me ajudar melhor ainda
abraço
ps.: na página há a utilização do rich:simpletoglepanel, mas o fileupload não está dentro dele.
@João Paulo,
Bom, o que você pode tentar fazer é colocar cada um destes componentes em um formulário diferente.
Abraços,
estou começando a trabalhar nessa area agora, um formulario diferente pra cada um seria cada um dentro de um h:form ?
se for isso entao eu tentei e não deu certo, pois agora nem chamando o método listener está
Olá Marcos, estou com um problema com o fileUploadListener que não é chamado, mas não estou usando rich:simpleTogglePanel, o fileUpload está dentro de panelGrid, rich:panel, a4j:form e f:view. será que é incompatibilidade?
Olá!
Encontrei o seu artigo, muito bom! Me ajudou há uns meses atrás! Acontece que agora estava tentando integrar um componente de upload+crop de imagens com a minha aplicação seam e não to conseguindo! O componente é o MultiPowUpload (http://www.element-it.com/multiple-file-upload/flash-uploader.aspx). Acontece que o script jsp que eles fornecem não corre no Seam. Será que você me pode dar uma dica de como integrar?
Valeu!
Oi Carlos,
Bom você pode partir do princípio de que todos estes componentes sobrescrevem o request para gerenciar o recebimento de arquivos. Sugiro que você olhe tanto o filtro do richfaces ou deste componente que você quer usar e desabilitar tal funcionalidade.