Problemas com selectOneMenu do primefaces com valueChangeListener

14 respostas
P

Galera to com um problema não estou conseguindo acessar o método do meu bean pelo valueChangeListener

quando selecionar uma opção no combo tenho que acessar meu metodo para poder fazer uma buscapelo id do item selecionado

meu bean
public void teste(ValueChangeEvent listener)throws Exception{
		listener.getOldValue();
	}
meu Jsf
<p:selectOneMenu valueChangeListener='#{procedimentoDetalheBean.teste()}'  value="#{procedimentoDetalheBean.objDominio.procedimento.id}" 
				      style="width: 250px;"
				      immediate="true">
		<f:selectItem itemLabel="Selecione o procedimento"
				     itemValue="" />
		<f:selectItems value="#{procedimentoDetalheBean.listProcedimentos}"
				     var="proced" itemLabel="#{proced.descricao}"
				   itemValue="#{proced.id}" />

		</p:selectOneMenu>

14 Respostas

P

Ninguem pode me ajudar?

H

Acontece alguma mensagem de erro?

P

não

H

Se vc colocar um breakpoint no método, ele é chamado?

P

NÃO

P

alguem?

G

Lembro que tive um problema parecido e por isto não utilizei o selectOneMenu do primefaces, resolvi o meu problema utilizando o h:selectOneMenu com f:ajax da seguinte forma:

<h:selectOneMenu id="pesEstado" required="true" immediate="true" value="#{pessoaBean.pessoa.estado}" valueChangeListener="#{clienteBean.aposEstadoSelecionado}"> <f:selectItems value="#{pessoaBean.estados}" /> <f:ajax event="change" render="cliIE"/> </h:selectOneMenu>

Dai vc pode depois tentar colocar o stylClass do primefaces nos componentes para que eles fiquem com o mesmo layout dos demais campos de seu form. Outra solução seria vc tentar utilizar o p:ajax dentro de seu p:selectOneMenu e chamar o método que vc precisa por ele utilizando o evento change. Esta forma eu não testei mas acredito que deve funcionar.

P

Com Ajax consigo chamar o método só que eu não consigo pegar o id do item selecionado.

tem alguma solução?

J

Tive um problema parecido …
só que no meu caso, o componente era um selectOneRadio.

resolvi usando o código abaixo :

<p:panel header="Cadastro Usuários" id="painelGeral" >				
					<table class="tabela" align="center">
			    		<tr>
			    			<td>
							<p:selectOneRadio id="tipoPessoa" value="#{formUsuarioBean.tipoPessoa}"   >										    				 		    				 				    				 	  
						            <f:selectItem itemLabel="Pessoa Física" itemValue="F" />  
						            <f:selectItem itemLabel="Pessoa Jurídica" itemValue="J" />  
						            <p:ajax event="change" update="painelGeral"/>						            				             
						        </p:selectOneRadio>   
                                                        .
                                                        .
                                                        .
public void setTipoPessoa(String tipoPessoa) {
		mudarjuridica(tipoPessoa);
		this.tipoPessoa = tipoPessoa;
	}

	private void mudarjuridica(String tipoPessoa){
		if(tipoPessoa.equalsIgnoreCase("F")){
			juridica = false;
		}else if(tipoPessoa.equalsIgnoreCase("J")){
			juridica = true;
		}	
	}

Solução meio porca … mas espero que ajude…

Agora tô com outro problema :

Lá no site : http://www.primefaces.org/showcase-labs/ui/home.jsf parece tudo tão fácil !

G

Também tive o problema com o selectOneRadio e resolvi da mesma forma hehehe

G

Com Ajax consigo chamar o método só que eu não consigo pegar o id do item selecionado.

tem alguma solução?

Se eu não me engano, no objto ActionEvent evt do seu método que será executado pelo change tem como vc pegar o objeto que está selecinado, preciso confirmar isto quando eu chegar em casa.

P

Se eu não me engano, no objto ActionEvent evt do seu método que será executado pelo change tem como vc pegar o objeto que está selecinado, preciso confirmar isto quando eu chegar em casa.

Beleza espero uma resposta

P

Consegui Arrumar o erro.

Valeu galera

M

Caro pauser2200,

Poderias postar como resolveu o problema?

Grato

Criado 6 de março de 2012
Ultima resposta 11 de abr. de 2012
Respostas 14
Participantes 5