JSF - Pegar o valor de um campo, como eu faco?

Ola pessoal
eu preciso pegar o valor de um campo no ManagedBean

<h:inputText  id="nome" maxlength="35" size="35" required="true"  styleClass="FormCampo" ></h:inputText>

como eu faco para pegar o valor desse campo no metodo

	public String pessoaBusca(){
		String nome = ????
		return "ok";
	}

como eu faco na parte ???

abs
T+

[quote=Krusst]Ola pessoal
eu preciso pegar o valor de um campo no ManagedBean

<h:inputText  id="nome" maxlength="35" size="35" required="true"  styleClass="FormCampo" ></h:inputText>

como eu faco para pegar o valor desse campo no metodo

	public String pessoaBusca(){
		String nome = ????
		return "ok";
	}

como eu faco na parte ???

abs
T+[/quote]

Se este campo estiver dentro de um formulário você faz assim

[code]public String pessoaBusca() {
HttpServletRequest request = (HttpServletRequest) FacesContext
.getCurrentInstance().getExternalContext().getRequest();
String nome = request.getParameter(“nomeDoFormulario:nomeDoCampo”);
return “OK”;

}[/code]

assim:

<h:inputText  id="nome" maxlength="35" size="35" binding="#{Bean.nome}" required="true"  styleClass="FormCampo" ></h:inputText> 

no seu Bean:

HtmlInputText nomeText = new HtmlInputTex();  // get e set

 public String pessoaBusca(){  
     String nome = ((String) getNomeText.getValue());
     return "ok";  
 } 

você liga seu campo com binding e depois recupera no backing bean, ou então liga direto na propriedade de um objeto usando o value="#{pessoa.nome}"
são as duas melhores práticas pra este caso…

public class MBean {

private String pessoa;


public String pessoaBusca(){   
    System.out.println( this.pessoa );
    return "ok";   
}  
public String getPessoa() {
    return this.pessoa;
}
public void setPessoa(String pessoa) {
    this.pessoa = pessoa;
}
}

No teu jsp

<h:inputText value="#{mbean.pessoa}" /> :wink:

[quote=André Fonseca]
Se este campo estiver dentro de um formulário você faz assim

[code]public String pessoaBusca() {
HttpServletRequest request = (HttpServletRequest) FacesContext
.getCurrentInstance().getExternalContext().getRequest();
String nome = request.getParameter(“nomeDoFormulario:nomeDoCampo”);
return “OK”;

}[/code][/quote]

Andre, ele nao reconhece o HttpServletRequest, ele pede para criar a classe
por que ocorre isso?
obrigado
T+

[quote=Javabuntu]assim:

<h:inputText  id="nome" maxlength="35" size="35" binding="#{Bean.nome}" required="true"  styleClass="FormCampo" ></h:inputText> 

no seu Bean:

HtmlInputText nomeText = new HtmlInputTex();  // get e set

 public String pessoaBusca(){  
     String nome = ((String) getNomeText.getValue());
     return "ok";  
 } 

você liga seu campo com binding e depois recupera no backing bean, ou então liga direto na propriedade de um objeto usando o value="#{pessoa.nome}"
são as duas melhores práticas pra este caso…[/quote]

ainda me gera erro
veja o meu javabeam

...
	HtmlInputText nomeText = new HtmlInputText();
...
	public HtmlInputText getNomeText() {
		return nomeText;
	}

	public void setNomeText(HtmlInputText nomeText) {
		this.nomeText = nomeText;
	}
....
	public String pessoaBusca(){
		String nome = ((String) getNomeText.getValue());  
		return "ok";
	}

no “getNomeText” ele me fala o seguinte “getNomeText cannot be resolved”
nao entendi o pq dele dar esse erro.

e na parte que vc me disse “binding=”#{Bean.nome}"", qdo marco o beam, ele nao me mostra nada apos o ponto
bean.???
se eu colocar como “value” ele seguem porem, no binding ele nao continua a procurar
por que ocorre isso?

obrigado pela ajuda
T+

dependendo da IDE que estiver utilizando ele vai te mostrar que precisar dar um import pra trabalhar:

isso foi exemplo :

onde coloquei Bean, você coloca sua classe no qual está o método BuscaPessoa, obviamente esta classe precisar estar configurada no faces-config

você declarou sua classe no faces-config ne?

[quote=Javabuntu]dependendo da IDE que estiver utilizando ele vai te mostrar que precisar dar um import pra trabalhar:

isso foi exemplo :

onde coloquei Bean, você coloca sua classe no qual está o método BuscaPessoa, obviamente esta classe precisar estar configurada no faces-config

você declarou sua classe no faces-config ne?
[/quote]

to no Eclipse, ele nao me mostrou o import na relacao de erros :s
fim, eu coloquei no faces-config,

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
 <managed-bean>
  <managed-bean-name>pessoaFisicaMB</managed-bean-name>
  <managed-bean-class>br.com.krusst.precadastro.managedbeans.PessoaFisicaMB</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>pessoaBuscaMB</managed-bean-name>
  <managed-bean-class>br.com.krusst.precadastro.managedbeans.PessoaBuscaMB</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>pessoaBuscaTesteMB</managed-bean-name>
  <managed-bean-class>br.com.krusst.precadastro.managedbeans.PessoaBuscaTesteMB</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>logradouro</managed-bean-name>
  <managed-bean-class>br.com.krusst.precadastro.beans.Logradouro</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>cpf</managed-bean-name>
  <managed-bean-class>br.com.krusst.precadastro.beans.Documento</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>rg</managed-bean-name>
  <managed-bean-class>br.com.krusst.precadastro.beans.Documento</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>telefoneResidencial</managed-bean-name>
  <managed-bean-class>br.com.krusst.precadastro.beans.Telefone</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>telefoneCelular</managed-bean-name>
  <managed-bean-class>br.com.krusst.precadastro.beans.Telefone</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>telefoneComercial</managed-bean-name>
  <managed-bean-class>br.com.krusst.precadastro.beans.Telefone</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>emailComercial</managed-bean-name>
  <managed-bean-class>br.com.krusst.precadastro.beans.Email</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>emailPessoal</managed-bean-name>
  <managed-bean-class>br.com.krusst.precadastro.beans.Email</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 
 <navigation-rule>
  <from-view-id>/jsp/pessoacadastro.jsp</from-view-id>
  <navigation-case>
   <from-outcome>sucesso</from-outcome>
   <to-view-id>/jsp/pessoacadastroview.jsp</to-view-id>
  </navigation-case>
</navigation-rule>
 
 <navigation-rule>  
  <from-view-id>/jsp/pessoa_busca.jsp</from-view-id> 
  <navigation-case>
   <from-outcome>ok</from-outcome>
   <to-view-id>/jsp/pessoa_busca_view.jsp</to-view-id>
  </navigation-case>
 </navigation-rule>
 
 <navigation-rule>
  <from-view-id>/jsp/pessoa_busca_teste.jsp</from-view-id>
  <navigation-case>
   <from-outcome>lista</from-outcome>
   <to-view-id>/jsp/pessoa_busca_view.jsp</to-view-id>
  </navigation-case>
 </navigation-rule>
 
</faces-config>

cara, ja abusando, o meu redirecionamento nao esta funcionado, no PessoaCadastro funciona, porem, nos outros nao, e as paginas existem, porem, qdo click no botao, ele nao faz nada, volta pra ele mesmo
pq pode estar ocorrendo isso!

obrigado pela ajuda que vem me dando
abs
T+

se você fizer como eu disse, vai precisar do import, digite isso lá no seus imports se ele não existir:

import javax.faces.component.html.HtmlInputText;

quanto a navegação, veja se não está acontecendo algum erro antes do retorno, se ele não chegar no return, não vai navegar mesmo…

veja se na sua jsp está chamando corretamente o método, nome da classe.nomeDoMetodo… tudo certinho…

[quote=Javabuntu]se você fizer como eu disse, vai precisar do import, digite isso lá no seus imports se ele não existir:

import javax.faces.component.html.HtmlInputText;

quanto a navegação, veja se não está acontecendo algum erro antes do retorno, se ele não chegar no return, não vai navegar mesmo…

veja se na sua jsp está chamando corretamente o método, nome da classe.nomeDoMetodo… tudo certinho…[/quote]

aparentemente esta tudo certo, mas se estivesse com erro, iria aparecer na aba de console certo?
tenho que abilitar alguma coisa pra pegar erros mais detalhados ou nao preciso?

abs
obrigado novamente

[quote=Javabuntu]se você fizer como eu disse, vai precisar do import, digite isso lá no seus imports se ele não existir:

import javax.faces.component.html.HtmlInputText;

quanto a navegação, veja se não está acontecendo algum erro antes do retorno, se ele não chegar no return, não vai navegar mesmo…

veja se na sua jsp está chamando corretamente o método, nome da classe.nomeDoMetodo… tudo certinho…[/quote]

cara, descobri qual era o problema, testei aqui, fiz o inferno e nao funcionava, fui almoçar e fechei o Eclipse, cheguei, nem alterei nada e mandei executar e funcionou, o Corno do Eclipse que sei la pq tava fazendo o erro
agora pq, eu nao sei!
e qdo testou eu sempre para e reinicio o tomcat
obrigado
fiz de uma forma que nem preciso passar os parametros, ele entende por si so
veja como ficou, e se vc achar que tem algo que nao deve ser assim por favor, me comunique

buscapessoa.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://richfaces.ajax4jsf.org/rich" prefix="rich"%>
<f:view>
	<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
	<html>
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	<title>Insert title here</title>
	</head>
	<body>
	<h:form id="form">
		nome:<h:inputText id="nome" value="#{pessoaBuscaMB.pessoaFisicaDB.pessoaFisica.nome}"/>
		<h:commandButton id="comandoCadastrar" value="Cadastrar" action="#{pessoaBuscaMB.busca}" >
		</h:commandButton>
	</h:form>
	</body>
	</html>

</f:view>

buscapessoaview.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://richfaces.ajax4jsf.org/rich" prefix="rich"%>
<f:view>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
pessoabuscaview<br>
<h:outputText value="#{pessoaBuscaMB.pessoaFisicaDB.pessoaFisica.nome}" />

				<h:dataTable value="#{pessoaBuscaMB.pessoaFisicaDB.listaPorParametro}" id="tabela" var="pessoa" border="0"  rowClasses="TbltrTrue,TbltrFalse" width="750">
				
					<h:column>
						<f:facet name="header">
							<h:outputText value="Código" /> 
						</f:facet>
						<h:outputText value="#{pessoa.id}"/>
					</h:column>
					<h:column>
						<f:facet name="header">
							<h:outputText value="Nome" /> 
						</f:facet>
						<h:outputText value="#{pessoa.nome}"/>
					</h:column>
					<h:column>
						<f:facet name="header">
							<h:outputText value="CPF/CNPJ" /> 
						</f:facet>
						<h:outputText value="#{pessoa.cpf}"/>
					</h:column>	
					<h:column>
						<f:facet name="header">
							<h:outputText value="RG" /> 
						</f:facet>
						<h:outputText value="#{pessoa.rg}"/>
					</h:column>																
				</h:dataTable>	
</body>
</html>
</f:view>

BuscaPessoaMB.java

package br.com.krusst.precadastro.managedbeans;

import br.com.krusst.precadastro.dao.PessoaFisicaDB;

public class PessoaBuscaMB extends PessoaFisicaDB {

	PessoaFisicaDB pessoaFisicaDB = new PessoaFisicaDB();

	public PessoaBuscaMB(PessoaFisicaDB pessoaFisicaDB) {
		super();
		this.pessoaFisicaDB = pessoaFisicaDB;
	}

	public PessoaBuscaMB() {
		super();
	}

	public PessoaFisicaDB getPessoaFisicaDB() {
		return pessoaFisicaDB;
	}

	public void setPessoaFisicaDB(PessoaFisicaDB pessoaFisicaDB) {
		this.pessoaFisicaDB = pessoaFisicaDB;
	}

	public String busca(){
		return "busca";
	}
	
}

PessoaFisicaDB.java

...
	public List getListaPorParametro() throws Exception{
		Connection conn  = null;
		ResultSet rs = null;
		String sql = BUSCA_POR_PARAMETRO;

        List list = new ArrayList();

        try {
			conn = GerenciadorConexao.getConexao();
			CallableStatement clblStmt = conn.prepareCall(sql);   
			clblStmt.setString(2,this.pessoaFisica.getNome());
			
			rs = clblStmt.executeQuery();
            while (rs.next()) {

                int id 				= rs.getInt(1);
                String nome 		= rs.getString(2);
                String documento 	= rs.getString(3);
                String status 		= rs.getString(9);


                PessoaFisica pessoaFisica = new PessoaFisica();
                pessoaFisica.setNome(nome);
                pessoaFisica.setId(id);
                pessoaFisica.setCpf(documento);
                pessoaFisica.setRg(status);
                pessoaFisica.setStatus(teste);
                
            list.add(pessoaFisica);
            }
		} catch (Exception e) {
				throw new Exception(e);
		}
		
		return list;
	}	
...

algum problema em fazer dessa forma?
abs
e obrigado a todos pela ajuda
T+