Passagem de parametro JSF - primefaces

11 respostas
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);
	}

11 Respostas

getAdicted
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);
	}

Boa tarde amigo,

Isso não funcionaria?:

<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>
limp13

nao permite essa sintaxe:

#{controle.teste(id)}

apenas:

#{controle.teste}
getAdicted

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

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..
<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>
    	
</html>
Ao inves de passar esse valor "united States" fixo..
<f:param name="country" value="United States" />

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}"
getAdicted
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..
<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>
    	
</html>
Ao inves de passar esse valor "united States" fixo..
<f:param name="country" value="United States" />

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}"

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>
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());
	}

}
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;
	}

}

[]'s

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…

<p:commandButton id="submitButton" value="Submit" 
							action="#{controle.outcome}">																					  							   
							
							<h:inputText id="id3" value="#{controle.idProfessor}" />  																		
						</p:commandButton>
getAdicted
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..

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

Beleza?

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

[]'s

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]

getAdicted

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:

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;  
    }  
          
}

... 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

getAdicted

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]

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

limp13

ok

Criado 15 de novembro de 2011
Ultima resposta 17 de nov. de 2011
Respostas 11
Participantes 2