JSF - Pegar os valores do form e passar os valores para o metodo, como?

Ola

Tenho a seguinte duvida
tenho um formularios, que esta funcinando “normalmente”
dou o submit e ele vai para o proximo mostrando todos os dados digitados,

porem, oq eu nao sei fazer é, pegar esse valores e passar para o metodo que cadastra no DB
tenho esse botao no formulario

<h:commandButton value="Cadastrar" action="#{pessoa.cadastrar}"></h:commandButton>

e o metodo que ele chama

	public String cadastrar() throws KrusstException{
		pessoaFisicaCadastraDB("teste");
		return("sucesso");
	}	

fazendo dessa forma, funciona, os dados sao cadastrados no DB
porem, eu preciso pegar os valores do formulario, e é essa parte que nao sei
1-em qual momento eu tenho que fazer esse cadastro?
como eu fiz no metodo cadastrar(), dentro dele ou em outro momento, so considero o metodo cadastrar como validacao?
2-como eu passo os valores do formulario para o metodo de cadastro?

para deixar aqui mais limpo, suponhamos que eu so tenha que cadastrar o nome da pessoa, eu tenho esse seguinte codigo no formulario

<h:inputText value="#{pessoa.nome}" id="nome" maxlength="50" size="50" required="true">
											<f:validateLength maximum="50" minimum="5" />
										</h:inputText>

entao, como faco isso?

obs.: eu nao uso HIBERNATE ou qualquer coisa do genero, pos o DB esta todo em Procedures
uma versao resumida do metodo que cadastra no DB

	public int pessoaFisicaCadastraDB(String pessoa) throws KrusstException{
		Connection conn  = null;
		PreparedStatement stmt = null;
		String sql = "EXEC SPTesteInsere ?";
		int qtd = 0;
		try {
			conn = GerenciadorConexao.getConexao();
			stmt = conn.prepareStatement(sql);
			stmt.setString(1,pessoa);
			qtd = stmt.executeUpdate();
			
		} catch (Exception e) {
				throw new KrusstException("erro no update",e);
		}
		return qtd;
	}

abs
t+

Se sua duvida é só como passar o valor do FORM para o seu ManagedBean, é simples

Quando você faz no campo #{pessoa.nome}, você está fazendo um binding (ligação) do campo do FORM para um atributo “nome”, dentro do ManagedBean “pessoa”. (o atributo deve possuir o método set e get).

Se você tem no mesmo form um binding para um campo (exemplo: #{pessoa.nome}) e seu botao chama um método cadastrar dentro do mesmo ManagedBean (#{pessoa.cadastrar}), então no seu método simplesmente chame o atributo de forma direta:

public String cadastrar() {
  System.out.println(nome);
  return null;
}

na sua classe deve existir os metodos get e set d cada campo do formulario
por exemplo

<h:form>
     <h:inputText value="#{bean.nome}"/>
     <h:commandButton action="#{bean.acao}" value="Enviar"/>
</h:form>

entao a classe deve conter

private HTMLInputText nome;

public String acao(){
    <comandos>
    return "susses";
}

public HTMLInputText getNome(){
    return this.nome;
}

public void setNome(HTMLInputText nome){
    this.nome = nome;
}

[quote=ManchesteR]Se sua duvida é só como passar o valor do FORM para o seu ManagedBean, é simples

Quando você faz no campo #{pessoa.nome}, você está fazendo um binding (ligação) do campo do FORM para um atributo “nome”, dentro do ManagedBean “pessoa”. (o atributo deve possuir o método set e get).

Se você tem no mesmo form um binding para um campo (exemplo: #{pessoa.nome}) e seu botao chama um método cadastrar dentro do mesmo ManagedBean (#{pessoa.cadastrar}), então no seu método simplesmente chame o atributo de forma direta:

public String cadastrar() { System.out.println(nome); return null; } [/quote]

valeu cara
funfou aqui
eu ja estava vendo coisas desse tipo nos codigos que deu uma olhada

	    //FacesContext facesContext = FacesContext.getCurrentInstance();  
	   // Map map = facesContext.getExternalContext().getRequestParameterMap(); 
	   // String teste = (String)map.get("pessNome");
		//UIParameter parameter = (UIParameter) event.getComponent().findComponent("pessNome");  
		//String teste = parameter.getValue().toString(); 

agora, so mais uma duvida, e pra passar a classe inteira?
tipo a classe Pessoa
como seria?

a forma que eu fiz, é POG

	public PessoaFisica getPessoaFisica(){
		PessoaFisica pess = new PessoaFisica();
		pess.setNome(getNome());
		return pess;
	}

abs

Coloque o objeto Pessoa como um atributo do seu ManagedBean, ex:

public class Test { //esse é o managed bean
  private Pessoas pessoa = new Pessoas();

  //get and set para o objeto Pessoa

  public String cadastrar() {
    System.out.println(pessoa.nome); //aqui voce confere que o valor foi adicionado dentro do pessoa
  }
}

Na sua interface, referencie assim: #{teste.pessoa.nome}, simples não?

Espero ter ajudado

[quote=ManchesteR]Coloque o objeto Pessoa como um atributo do seu ManagedBean, ex:

public class Test { //esse é o managed bean
  private Pessoas pessoa = new Pessoas();

  //get and set para o objeto Pessoa

  public String cadastrar() {
    System.out.println(pessoa.nome); //aqui voce confere que o valor foi adicionado dentro do pessoa
  }
}

Na sua interface, referencie assim: #{teste.pessoa.nome}, simples não?

Espero ter ajudado[/quote]

ajudou sim, vou fazer as alteracoes e ver oq acontece

ja aproveitando, acho que vc pode me ajudar em outra duvida

veja essa minha outra duvida nesse link
http://www.guj.com.br/posts/list/83174.java
acho que vc pode me ajudar nela
obrigado
Abs