Método nao executa em ManagedBean

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.

public void testaExecuta() throws IOException{
		File arquivo = new File("arquivo.txt");
		OutputStream os = new FileOutputStream(arquivo);
		OutputStreamWriter osw = new OutputStreamWriter(os);
		BufferedWriter bw = new BufferedWriter(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!?

Opá valew guilhermehkr por responder,

Entao, executa sim, mas nao faz nada é o unico método que nao faz nada na ManagedBean :frowning:

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.

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.

De log, me aparece esse Warning:

WARNING: PWC4011: Unable to set request character encoding to UTF-8 from context /Relatorio, because request parameters have already been read, or ServletRequest.getReader() has already been called

Quanto ao

resolvi da seguinte forma:

                
    		        <parameter-encoding default-charset="utf-8"/>
		

link:http://javaevangelist.blogspot.com/2012/01/glassfish-default-encoding-iso-8859-1.html

se pelo main esta executando sera que voce nao esta sem permissao de escrita no conteiner da aplicacao ?
o metodo esta sendo chamado realmente?

[quote]se pelo main esta executando sera que voce nao esta sem permissao de escrita no conteiner da aplicacao ?
[/quote]
Como faço pra editar essa configuração no container da aplicação ?

Sim.

aluem ? :frowning:

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.

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 ?

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.

Cara consegui, mas tive que colocar o caminho completo, sabe fazer caminho relativo ?

no seu MB voce pode pegar o caminho do root

[code] HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
String caminho = request.getServletContext().getRealPath("/");

[/code]

de um sysoutprint no caminho para ver.

Isso só vai funcionar quando tiver feito o deploy, nao ?

Sim, nao sei qual servidor voce esta usando, mas pro exemplo, esse codigo

	[code]HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();   
	System.out.println(request.getServletContext().getRealPath("/"));[/code]

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.