Passagem de parametro JSF - primefaces

Galera estou com uma dúvida na passagem de parâmetro, tenho um botao que chama um método java com o nome “teste” e que possui um paramentro, no caso um id valor, e pela interface que vou passar esse id… só que no caso, não sei como passar este parametro, como faco pra que o commandButton entenda que esta sendo passado um valor pela interface, pois atualmente ele nao entende e dispara uma excessao de método nao encontrado… eu teria que adicionar algo no meu faces-config ???

	<h:form>			
						
						<p:commandButton id="botao" value="Teste" action="#{controle.teste}" >									
							<f:param name="cdTeste" value="1"></f:param>					 					
						</p:commandButton>	
						<br />
						<br />
					</h:form>
public void teste(int id){
		leitura.teste(id);
	}

[quote=limp13]Galera estou com uma dúvida na passagem de parâmetro, tenho um botao que chama um método java com o nome “teste” e que possui um paramentro, no caso um id valor, e pela interface que vou passar esse id… só que no caso, não sei como passar este parametro, como faco pra que o commandButton entenda que esta sendo passado um valor pela interface, pois atualmente ele nao entende e dispara uma excessao de método nao encontrado… eu teria que adicionar algo no meu faces-config ???

	<h:form>			
						
						<p:commandButton id="botao" value="Teste" action="#{controle.teste}" >									
							<f:param name="cdTeste" value="1"></f:param>					 					
						</p:commandButton>	
						<br />
						<br />
					</h:form>

public void teste(int id){ leitura.teste(id); } [/quote]

Boa tarde amigo,

Isso não funcionaria?:

[code]<h:form>

                <p:commandButton id="botao" value="Teste" action="#{controle.teste(id)}" >                                      
                    <f:param name="cdTeste" value="1"></f:param>                                          
                </p:commandButton>      
                <br />  
                <br />  
            </h:form>[/code]

nao permite essa sintaxe:

#{controle.teste(id)}

apenas:

#{controle.teste}

Veja se ajuda: http://www.mkyong.com/jsf2/4-ways-to-pass-parameter-from-jsf-page-to-backing-bean/

Peguei o exemplo no site que tu me passou… com relação a passagem de parâmetro fixo ok… mas com relação a passagem de parâmetro de inputText por exemplo, eu nao compreendi muito bem… pq agora preciso pegar o valor do inputText e digamos passar para o método

Peguei este exemplo …
http://www.mkyong.com/jsf2/jsf-2-param-example/

Parte do codigo abaixo…

[code]<h:body>

<h1>JSF 2 param exemplo</h1>

  <h:form id="form">

Digite seu nome :
<h:inputText size="10" value="#{user.name}" />

<br /><br />

<h:commandButton id="submitButton" 
	value="Submit - US" action="#{user.outcome}">

	<f:param name="country" value="United States" />

</h:commandButton>

  </h:form>

</h:body>
[/code]

Ao inves de passar esse valor “united States” fixo…

gostaria de pegar o valor do digitado pelo usuario no inputText:

<h:inputText size="10" value="#{user.name}" />

E passar para o método

] action="#{user.outcome}"

[quote=limp13]Peguei o exemplo no site que tu me passou… com relação a passagem de parâmetro fixo ok… mas com relação a passagem de parâmetro de inputText por exemplo, eu nao compreendi muito bem… pq agora preciso pegar o valor do inputText e digamos passar para o método

Peguei este exemplo …
http://www.mkyong.com/jsf2/jsf-2-param-example/

Parte do codigo abaixo…

[code]<h:body>

<h1>JSF 2 param exemplo</h1>

  <h:form id="form">

Digite seu nome :
<h:inputText size="10" value="#{user.name}" />

<br /><br />

<h:commandButton id="submitButton" 
	value="Submit - US" action="#{user.outcome}">

	<f:param name="country" value="United States" />

</h:commandButton>

  </h:form>

</h:body>
[/code]

Ao inves de passar esse valor “united States” fixo…

gostaria de pegar o valor do digitado pelo usuario no inputText:

<h:inputText size="10" value="#{user.name}" />

E passar para o método

] action="#{user.outcome}" [/quote]

Bom dia amigo, veja se o seguinte exemplo lhe eh util:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui">

<h:head>
	<title>Segurança</title>
</h:head>

<h:body>
	<h:form id="id1">
		<h:panelGrid columns="4" width="80%" id="painelPescador">
			<h:outputLabel for="id2" value="Name: " />
			<h:inputText id="id3" value="#{countryMB.country.name}" />
			<h:panelGrid columns="3">
				<p:commandButton value="Submit" action="#{countryMB.outcome}"
					ajax="false" />
			</h:panelGrid>
		</h:panelGrid>
	</h:form>
</h:body>
</html>

[code]package br.com.sisgappe.view;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import br.com.sisgappe.model.entity.Country;

@ManagedBean
@ViewScoped
public class CountryMB {

private Country country = new Country();

public void setCountry(Country country) {
	this.country = country;
}

public Country getCountry() {
	return country;
}

public void outcome() {
	System.out.println(this.getCountry().getName());
}

}
[/code]

[code]package br.com.sisgappe.model.entity;

import java.io.Serializable;

public class Country implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = 1L;
private String name;

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

}
[/code]

[]'s

po… nao consegui com esses codigos que tu me passou…

Gostaria de pegar o valor que esta no imput… no caso eu tenho esse idProfessor na minha classe java(controle) como atributo… gostaria de seta-lo ou passar como parametro para o metodo outcome…

<p:commandButton id="submitButton" value="Submit" 
							action="#{controle.outcome}">																					  							   
							
							<h:inputText id="id3" value="#{controle.idProfessor}" />  																		
						</p:commandButton>

[quote=limp13]po… nao consegui com esses codigos que tu me passou…

Gostaria de pegar o valor que esta no imput… no caso eu tenho esse idProfessor na minha classe java(controle) como atributo… gostaria de seta-lo ou passar como parametro para o metodo outcome…

[code]
<p:commandButton id=“submitButton” value=“Submit"
action=”#{controle.outcome}">

						<h:inputText id="id3" value="#{controle.idProfessor}" />  																		
					</p:commandButton>

[/code][/quote]

Beleza?

Posta o cógido completo da sua página jsf e o seu ManagedBean.

[]'s

Aee… po o imput tava certo, problema que eu tinha viajado olha como estava:

	public void outcome(){		 
		FacesContext fc = FacesContext.getCurrentInstance();
		this.idProfessor = getIdProfessorParam(fc);
		casaCurriculo(getIdProfessor());		 		
	}

Como eu nao estou mais usando o “param” eu tive q tirar as duas linhas… pq senao deixaria o idProfessor nulo… o input ta funcionando corretamente…

	public void outcome(){		 
		casaCurriculo(getIdProfessor());		 		
	}

[b]

Bem consegui valeu mesmo pela paciencia e ajuda kra, esse site que tu me recomendou antes é muito bom cheio de exemplos… Obrigado ![/b]

Cria uma Classe Professor, por exemplo:

pubic class Professor implements Serializable{
   private String idprofessor;

    // getters e setters
}

… e substitua pela classe Country que eu lhe passei como exemplo.

A sua classe Controle ficará mais ou menos assim:

[code]package control;

import java.io.IOException;
import java.util.Map;
import javax.xml.parsers.ParserConfigurationException;
import org.primefaces.event.FileUploadEvent;
import org.xml.sax.SAXException;
import bean.LeituraXmlLattes;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

@ManagedBean
@SessionScoped
public class Controle {

private LeituraXml leitura;  
private FileUploadController fileUpload;  
private Professor professor = new Professor();
              
public Controle (){  
    leitura = new LeituraXml();  
    fileUpload = new FileUploadController();  
}  

public setProfessor(Professor professor){ 
   this.professor = professor;      
}

public getProfessor(){
 return this.professor;
}

public void casaCurriculo(String idProfessor){  
    leitura.casarLattesQualis(idProfessor);  
}  
  
public void handleFileUpload(FileUploadEvent event)throws IOException {             
    fileUpload.handleFileUpload(event);  
}        
  
public void salvarCurriculo() throws ParserConfigurationException, SAXException, Exception{  
    fileUpload.salvar();  
}  
      
public void outcome(){         
    FacesContext fc = FacesContext.getCurrentInstance();  
    this.idProfessor = getIdProfessorParam(fc);  
    casaCurriculo(getIdProfessor());                  
}  
  
//get value from "f:param"  
public String getIdProfessorParam(FacesContext fc){  
    Map&lt;String,String&gt; params = fc.getExternalContext().getRequestParameterMap();  
    return params.get("idPessoa");  
}  

public String getIdProfessor() {  
    return idProfessor;  
}  

public void setIdProfessor(String idProfessor) {  
    this.idProfessor = idProfessor;  
}  

} [/code]

… sua pagina jsf assim:

&lt;ui:composition template="index.xhtml"  
    xmlns:ui="http://java.sun.com/jsf/facelets"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"  
    xmlns:p="http://primefaces.prime.com.tr/ui"&gt;  
  
    &lt;ui:define name="principal"&gt;  
                          
        &lt;p:growl id="growl" showDetail="true" /&gt;  
  
        &lt;p:accordionPanel autoHeight="false" onTabChangeUpdate="growl" effect="bounceslide"&gt;  
            &lt;p:tab title="Classificação Qualis" id="clasQualis"&gt;  
                &lt;h:panelGrid columns="2" cellpadding="10"&gt;  
                    <br />  
                    <br />                                                          
                    &lt;h:form&gt;                                    
                        &lt;h:inputText id="idProfessor" type="submit" value="#{controle.professor.idprofessor}" /&gt;          
                        &lt;p:commandButton id="submitButton" value="Classificar"   
                            action="#{controle.outcome}"&gt;                                                                                                                                                                                                                                                                                                                          
                        &lt;/p:commandButton&gt;  
                        <br />  
                        <br />  
                    &lt;/h:form&gt;  
                &lt;/h:panelGrid&gt;  
            &lt;/p:tab&gt;  
        &lt;/p:accordionPanel&gt;  
  
    &lt;/ui:define&gt;  
&lt;/ui:composition&gt;  

… e se quiser utilizar o idprofessor dentro da classe Controle, faça this.professor.getIdprofessor();

Portanto, é uma boa prática que voce delegue essa responsabilidade idprofessor, para uma classe Professor.

Espero que tenha ficado claro, caso ainda tenha dúvidas e queira aprimorar os seus conhecimentos, estude com as apostilas da Caelum.

[]'s

[quote=limp13]Aee… po o imput tava certo, problema que eu tinha viajado olha como estava:

	public void outcome(){		 
		FacesContext fc = FacesContext.getCurrentInstance();
		this.idProfessor = getIdProfessorParam(fc);
		casaCurriculo(getIdProfessor());		 		
	}

Como eu nao estou mais usando o “param” eu tive q tirar as duas linhas… pq senao deixaria o idProfessor nulo… o input ta funcionando corretamente…

	public void outcome(){		 
		casaCurriculo(getIdProfessor());		 		
	}

[b]

Bem consegui valeu mesmo pela paciencia e ajuda kra, esse site que tu me recomendou antes é muito bom cheio de exemplos… Obrigado ![/b][/quote]

Maravilha!

Por gentileza, edita o assunto do seu primeiro post, acrescentando a tag: [RESOLVIDO]. Da proxima vez que for postar, olha o tipo do assunto, esse por exemplo, deveria estar em Desenvolvimento Web e não em Persistencia. :smiley:

[]'s

ok