Ao utilizar h:selectOneMenu os mêtodo do bean não são executados

4 respostas
E

Salve pessoal,

Estou tendo dificuldades com selectOneMenu. Alguém podeia dar uma luz?

No JSP:
<h:selectOneMenu  id="codigoOperacao" value="#{marcarContaClienteBean.codigoOperacao}"
		style="#{marcarContaClienteBean.exibeOcultaConta}" >
	 <f:selectItems  value="#{marcarContaClienteBean.listaOperacao}"/> 
				 
	</h:selectOneMenu>

         <h:commandButton value="Pesquisar"   action="#{marcarContaClienteBean.verificarControles}" />
No Bean:
private String codigoOperacao;

 private Collection listaOperacao;



public String verificarControles(){
	
        if(codigoOperacao.equals("0"))
	 setErros("----------Operacao - obgrigatorio  ------ ");	
	
	 
	return "teste";
}

O combo é preenchido corretamente com o conteúdo da Collection listaOperacao e a tela é contada corretamente. Inclusive o combo funciona corretamente.

Porém quado clico no commandButton "Pesquisar" o action="#{marcarContaClienteBean.verificarControles}" não é excutado na verdade neunhum mêtodo é executado. Na verdade o "Descritor" do Bean é executado mas o mêtodo invocaod em si não.

alguém têm idéia do que pode ser?

Se eu utilizar immediate="true" no commandButton :
<h:commandButton value="Pesquisar"  immediate="true" action="#{marcarContaClienteBean.verificarControles}" />

O mêtodo é executado porém tenho de recuperar o atributos via Request e não queria isso.

Pesquisei na internet e aqui mesmo no forúm mas não consegui resolver o problema.

Caso alguém possua um exemplo funcional por favor compartelhem,

t+

4 Respostas

E

Colega,

Estou com o mesmo problema aqui… gostaria de saber se encontrou uma solução para este problema??

Obrigado!!

casmeiron

Bom dia,
Verifique se nao está ocorrendo algum erro de validação, pois isso iria encerrar o lifecycle do faces antes de chegar no momento de execute (executar a sua action).
Com o immediate isso funciona pois ele executa a ação em um momento antes e você precisa recuperar os dados no request pois o updateModel nao aconteceu.

E

Amigo,

E isso mesmo, alterei para mostrar a msg da validação… e apareceu a msg de erro.

Estou com problemas para trabalhar com combobox no jsf. Já peguei alguns exemplos … mas não consegui fazer funcionar… quer dizer carrego a combo… mas não consigo ligar o valor selecionado ao campo combo… então ocorre o erro de validação. Se puder me ajudar agradeço

Este é o código

<%-- campo do sobrenome, associado ao inputSobrenome de pessoaBack --%>
                <h:outputText value="#{msgs.promptAutor}"
                              styleClass="labelsForms"/>
                <h:selectOneMenu binding="#{livroBack.selectGenero}" id="genero">
                   <f:selectItems value="#{livroBack.valuesComboBox}" />
                </h:selectOneMenu>  
                  
                <h:message for="genero" styleClass="erroValidacao"/>

public class LivroBacking {

private UICommand commandAlterar;
private UICommand commandRemover;
private UIInput inputId;
private UIInput inputTitulo;
private UIInput inputAutor;
private UISelectOne selectGenero;
//private UISelectItems selectItemsGenero;

private UIInput inputEditora;
private UIInput inputAno;
//private genero_id int2 NOT NULL,
private UIInput inputDescricao;
private UIInput inputPreco;
private UIInput inputEstoque;
private UIInput inputReserva;

private UISelectItems selectItems;    

private String saida;

public LivroBacking() {
    
    // inicia os componentes
    initComponents();
    
}


public Collection getValuesComboBox() throws ApplicationException{  
    Collection toReturn = new ArrayList();  
    
    try {
        List generos = (new PostgresGeneroDAO()).listarGenero(); 

        Iterator it = generos.iterator();

        while( it.hasNext() ){
            Genero genero = (Genero)it.next();
            toReturn.add( new SelectItem( genero.getIdGenero(), genero.getDescricao() ) );  
        }  
    }catch(Exception e){
        throw new ApplicationException("Erro no carregamento da lista de generos", e);
    }
    
    //selectGenero.setv = ()toReturn.iterator().next();
    
    return toReturn;
}

continua …
}

E

casmeiron

Antes de mais nada mto obrigado pela atenção!

No meu caso não há erro. Minha página JSP é montada corretamente, inclusive o combo que é carregado por um collection. Tudo funciona perfeitamente bem. O HTML gerado esta coeso. O problema é que um commandbutton que chama um método do Bean para consistir os valores não esta sendo executado. Acompanhando pelo debug (eclipse/jboss) o super do Bean é executado mas depois disso não executa o método defino no value do button. E não lança nenhuma exception. Se eu colocar o immediate=“true” na tago do selectOneMenu não faz nehuma diferença mas se colocar na tab do bottun roda normalmente mas teria de recuperar os controles da JSP através de request. E eu não queria isto. Claro que se não existir recuruso e tiver que trabalhar com request paciência. Só para completar caso eu gere o selectOneMenu estatico assim:

<h:selectOneRadio valueChangeListener="#{marcarContaClienteBean.controlaRadio}" onclick="submit()" immediate="true" value="#{marcarContaClienteBean.tipoConsulta}" id="tipoConsulta" required="false" > <f:selectItem itemValue="conta" itemLabel="Conta"/> <f:selectItem itemValue="cpf" itemLabel="CPF"/> <f:selectItem itemValue="cnpj" itemLabel="CNPJ"/> </h:selectOneRadio>

Funciona perfeitamente sem precisar recorrer a request. Só que o projeto que estou desenvolvendo e para WorkFlow e têm dezemas de combos dinâmivas e sincronizadas.
Caso alguma alma tenha um dica estou no aguardo

elvispellizari
Pois meu camarada tb estou levando uma surra dos combos! :o) Pois sou newbie.
Estou esperando uma solução da área de tecnológia da empresa que trabalho caso aparaça alguma idéia posto aqui.

No mais vamos esperar alguma luz.

t+

Criado 1 de dezembro de 2007
Ultima resposta 4 de dez. de 2007
Respostas 4
Participantes 3