Dúvida em JSF - atributo action

12 respostas
Marcio_Nogueira

Tenho o seguinte método em meu managedBean:

public void cadastrarUsuario(Usuario usr){
		Facade f = new Facade();
			   usr.setUsuario(usuario);
			   usr.setSenha(senha);
		       f.cadastrarUsuario(usr);
	}

Estou chamando o método em meu commandButton da seguinte forma:

<h:commandButton value="Cadastrar Usuário" action="#{usuario.cadastrarUsuario}"/>
porém, está gerando o seguinte erro:
GRAVE: org.apache.jasper.el.JspMethodNotFoundException: /jsp/cadastroUsuario.jsp(31,8) '#{usuario.cadastrarUsuario}' Method not found: [email removido]()

Alguém poderia dar uma ajuda? :wink:

12 Respostas

Hebert_Coelho

Seu método espera um parametro cadastrarUsuario(Usuario usr).

e na chamada do método você chama o método sem passar parametro #{usuario.cadastrarUsuario}.

Marcio_Nogueira

Como assim? Poderia dar um exemplo de como implementar? :wink:

Hebert_Coelho

#{usuario.cadastrarUsuario(usuario)}

Mas você tem que estar utilizando jsf 2.0.

Não sei se com JSP no JSF 2.0 funcionaria.

Marcio_Nogueira

Gerou o seguinte erro:

The function cadastrarUsuario must be used with a prefix when a default namespace is not specified
Hebert_Coelho

[quote=Marcio_Nogueira]Gerou o seguinte erro:

The function cadastrarUsuario must be used with a prefix when a default namespace is not specified

Pode ser então que com JSP não funciona.

Marcio_Nogueira

Meu jsp funciona, o probema está na execução do método. :cry:

Hebert_Coelho

Então não funciona! :stuck_out_tongue:

Vc tem que enviar o obj usuario, então você retira o usuario de ser como parametro do metodo e depois utilizar um desses métodos aqui. http://balusc.blogspot.com/2006/06/communication-in-jsf.html

Marcio_Nogueira
Fiz a seguinte alteração no método:
public void cadastrarUsuario(){
		Facade f = new Facade();
		Usuario usr = new Usuario();
		
				   usr.setUsuario(usuario);
				   usr.setSenha(senha);
				   
		       f.cadastrarUsuario(usr);
	         }
Marcio_Nogueira
O problema é que meu método não é reconhecido, o mesmo está da seguinte forma:
public void cadastrarUsuario(ActionEvent event){
		usr = new Usuario();
		   f = new Facade();
		   
		   	usr.setUsuario(usuario);
		   	usr.setSenha(senha);
		   	
		   f.cadastrarUsuario(usr);	   	
	}
Hebert_Coelho
Marcio_Nogueira:
O problema é que meu método não é reconhecido, o mesmo está da seguinte forma:
public void cadastrarUsuario(ActionEvent event){
		usr = new Usuario();
		   f = new Facade();
		   
		   	usr.setUsuario(usuario);
		   	usr.setSenha(senha);
		   	
		   f.cadastrarUsuario(usr);	   	
	}

Cara, ActionEvent event vc utilziar quando seu método é um actionListener.

Estuda o básico de JSF. No link que eu te mostrei tem um monte de exemplo de como enviar parametros.

Marcio_Nogueira

Andei estudando o link que você me enviou, porém, os exemplos mostrados não fpram suficientes para tirar minha dúvida.
Pelo que entendi, o atributo action é usado para navegar entre as páginas de sua aplicação, e o actionListener para executar código?
Seria algo assim ou estou errado?

Segue a chamada ao método em meu commandButton:

<h:commandButton type="submit" actionListener="#{usuario.cadastrarUsuario}" action="#{usuario.navegaSucesso}" value="Cadastrar" />:wink:

Hebert_Coelho

ActionListener serve para alterar o estado de algum objeto que você necessite (geralmente componentes da tela e tal).

O Action serve para realizar a ação e encaminhar o destino da ação.

Criado 16 de novembro de 2011
Ultima resposta 18 de nov. de 2011
Respostas 12
Participantes 2