JSF - Action ou ActionListener?

Quando usar cada um deles? Qual a diferença em termos de desenvolvimento na pratica? E o ChangeListener, alguem ja usou? Podem me dar usos praticos de cada caso?

Valeu!

uma Action não receb um evento diferente da ActionListener

segue um exemplo

[code]public void apagaObjeto(ActionEvent evento){

UIParameter param =
(UIParameter) evento.getComponent().findComponent(“apagar”);
projeto.setId((Integer)param.getValue());
pDao = new ProjetoDao();
pDao.apagaObjeto(projeto);
projeto = new Projeto();
}
[/code]

abraços

Além disso com o ActionListener vc nao pode mudar a pagina que vc está. A não ser que faça na mão um forward com o HttpServletRequest. Mas basicamente eu acho que é o que o amigo falou anteriormente.

Alberto

Deixa eu ver se entendi direito…

Se eu quiser fazer uma operação que navegue de uma pagina para outra, eu preciso fazer um Action. Mas nos demais casos, como apagar uma linha de uma tabela, eu uso o ActionListener.

Mas existe algum erro em usar um action pra realizar essa operacao de apagar a linha de uma tabela? Alguma coisa impeditiva? Restrições?

Não tem nenhum impedimento em vc excluir uma linha da coluna com uma action. Tem problema não.

Alberto

[quote=nicholas.bittencourt]
Mas existe algum erro em usar um action pra realizar essa operacao de apagar a linha de uma tabela? Alguma coisa impeditiva? Restrições?[/quote]

Basicamente não, caso você passe por f:param a linha da tabela cujo qual você quer excluir :stuck_out_tongue: mas o teu action vai ter que retornar null ou uma String vazia, porque geralmente o action vai te redirecionar para outra página

vale lembrar que o action você pode botar diretamente uma string, do tipo action=“sucesso” para te direcionar para a proxima pagina

use o actionListener para métodos na página mesmo, caso você queira alterar algo ou afins. O action (pegando do backing bean) você pode usar por exemplo, pra limpar valores ou carregar valores antes de abrir uma página :slight_smile:

Existe como carregar um action por default? Como eh a codificacao? Se o usuario acessar direto o *.faces ele ja executa esse action?

Olá

[quote=nicholas.bittencourt]
Existe como carregar um action por default? Como eh a codificacao? Se o usuario acessar direto o *.faces ele ja executa esse action?[/quote]

Realmente isso eu não sei te dizer… Mas não vejo nenhuma situação cujo qual você precise fazer isso, o mais comum é como se você programasse pra Swing, ou seja, imagina que uma lista de entidades não esteja carregada, se ela estiver nula, tu chama o dao e pronto, senao só carrega na tela