Bom dia, tenho o seguinte método na minha ManagedBean, porém nao consigo executar clicando em um botão no xhtml(primefaces), alguem sabe me dizer porque o arquivo não é escrito ?
Obs: Dentro de um main esse método funciona normal.
publicvoidtestaExecuta()throwsIOException{Filearquivo=newFile("arquivo.txt");OutputStreamos=newFileOutputStream(arquivo);OutputStreamWriterosw=newOutputStreamWriter(os);BufferedWriterbw=newBufferedWriter(osw);bw.write("Escreve no arquivo");bw.close();}
Quando você clica no botão na sua tela, ele pelo menos acessa o método desejado!?
renatorudolf
Opá valew guilhermehkr por responder,
Entao, executa sim, mas nao faz nada é o unico método que nao faz nada na ManagedBean
guilhermehkr
Renato.
Eu não manjo muito de java IO, mas testei o seu código no Junit e realmente cria o arquivo …
Não vejo por qual motivo a criação do arquivo não seria feita pelo button também.
Não há nenhum log de erro ?
Você debugou este acesso ao método se utiizando do button da tela ?!
Vou tentar montar uma apliaçõa rápida aqui para testar isto.
renatorudolf
Não ha.
E outra, adicionei o metodo testaExecuta dentro de outro método para que assim fosse executado junto a outro processo, e o arquivo ainda nao foi gerado.
se pelo main esta executando sera que voce nao esta sem permissao de escrita no conteiner da aplicacao ?
o metodo esta sendo chamado realmente?
renatorudolf
se pelo main esta executando sera que voce nao esta sem permissao de escrita no conteiner da aplicacao ?
Como faço pra editar essa configuração no container da aplicação ?
Sim.
renatorudolf
aluem ?
guilhermehkr
Eu fiz um teste aqui e consegui gravar no arquivo, porém em um pasta que tenho permissão.
Montei um aplicação JSF simples e fiz o acesso ao método e gravei em um arquivo na pasta pessoal.
Se você diz que o método do ManegedBean esta sendo acessado e não esta retornando nenhuma excessão, também chego a conclusão de que possa ser permissões.
Tenho alguns links sobre isto, quando acha-los compartilho.
renatorudolf
Ficaria desse jeito ?
File arquivo = new File("./pastaPessoal/arquivo.txt");
e daria permissão pelo eclipse mesmo na pasta ou no servidor de aplicação ?
guilhermehkr
Aqui eu só coloquei:
path = "/home/pastaPessoal/arquivo.txt";
então, sobre a permissão no container eu não sei, mas estou procurando algo sobre para acrescentar aqui.
renatorudolf
Cara consegui, mas tive que colocar o caminho completo, sabe fazer caminho relativo ?
se voce estiver rodando o projeto na sua ide, o tomcat no meu caso cria um diretorio webApps fisico dentro do meu workspace. Voce precisa dar permissao nesse diretorio que ele criar se for o caso.