estou com dois problemas ao tentar pegar e setar um valor para um component FormFile do Struts. Primeiro que ao selecionar um arquivo, nao consigo pegar o caminho completo dele. Esse componente apresenta um metodo getFileName(), que me retorna o nome do arquivo, mas nao consegui de forma alguma pegar o caminho completo do mesmo. O segundo e principal problema que estou tendo, seria para setar um novo valor dinamicamente para este campo, apos o refresh da minha pagina por exemplo. A propriedade setFileName() gera uma exception java.lang.UnsupportedOperationException. Alguem saberia me ajudar por favor? Obrigado!
Você poderia postar trechos do código onde você tenta ler o caminho do arquivo?
E o trecho do JSP também…
W
werinton
Boa tarde Rangel Zutin.
Pelo que entendi, voce tem um input file na sua JSP, que se refere a um FormFile do seu Form correto?
Bom, se for isto, você nunca vai conseguir pegar o caminho completo do arquivo, pois o proprio navegador não te manda isto (afinal não interessa para o servidor onde o arquivo se encontra na maquina cliente).
Você também não consegue setar um valor para o mesmo, pois o navegador também não permite.
Se você fizer um codigo HTML com o e tentar setar um valor para ele via javascript também não vai funcionar.
Se funcionasse você poderia modificar o que o usuario está lhe enviando e pegar um outro arquivo no lugar, logo o navegador não vai permitir tal ação.
Se você está tendo problema ao fazer um submit da tela e perdendo o conteudo do campo file, a unica forma de resolver é via AJAX, sem submeter o form inteiro.
Espero ter ajudado.
Abraços.
Rangel_Zutin
Obrigado werinton e Leandro…
Ajudou sim werinton. É exatamente isso que estava acontecendo. Agora entendi melhor os conceitos.
Meu problema é que eu tenho um primeiro submit no meu form, que esta preenchido com todos os valores que eu preciso, inclusive os valores do elemento <html:file> do Struts que na verdade encapsula um <input type=“file”>… Apos esse primeiro submit minha aplicação acessa um DAO e retorna algumas informações de validação, e mostra uma mensagem de validação e dois botões ao usuário, deseja continuar “SIM” e “NÃO”. Para esse segundo submit preciso ter meu form ja preenchido com os dados escolhidos pelo usuario antes de dar o primeiro submit, e para o elemento <input type=“file”> estava impossivel manter o valor apos esse primeiro refresh da pagina. Estou desenvolvendo uma nova funcionalidade em uma aplicação antiga, e o arquiteto não me deixou a usar AJAX pra resolver esse problema. O que eu fiz foi apos o primeiro submit, esconder os dados do formulario e apenas apresentar ao usuario a mensagem de validação e os dois botoes “SIM” e “NÃO”, e setei as informações do form na sessão, apos meu primeiro submit… Resolveu meu problema, porém nao sei se da maneira correta… Agradeço desde ja a quem puder comentar.
W
werinton
Você só precisa se preocupar com o tamanho do arquivo, pois se você guardar algo muito grande na sessão, e dependendo da quantidade de usuários usando o sistema, pode acabar a memória do servidor.
Eu tenho um problema similar no sistema que estou trabalhando, porém sei a quantidade de usuários e há um tamanho máximo do arquivo, calculando sei que o servidor agüenta esta solução.
Sem utilização de AJAX não vejo outra solução senão guardar na sessão.