Recuperar valor do combobox jsf

5 respostas
tenclar

A comobox está sendo populada, mas tentando recuperar o valor do combobox ele está retornando nulo, segue abaixo :
no arquivo xhtml

<h:outputLabel for=“Estado” value=“Estado:” />

<h:selectOneMenu id=“Estado” value="#{cidadeController.cidade.estado}">

<f:selectItems value="#{cidadeController.estadoSelectItems}" />

</h:selectOneMenu>

Bean:

public List getEstadoSelectItems() {

List toReturn = new LinkedList();

for (Estado estado : ufDao.getEstados()) {

toReturn.add(new SelectItem(estado,estado.getSigla()));

}

return toReturn;

}

5 Respostas

L

parece que esta faltando vc criar um conversor para o objeto estado.

R

Creio que vc precisa de um converter:
http://www.rponte.com.br/2008/07/26/entity-converters-pra-da-e-vender/

E implementar hashcode e equals:
http://www.rponte.com.br/2008/02/01/selectonemenu-converter-erro-de-validacao/

finotti

Quando vc usa a própria entidade como value no combobox, é necessário utilizar um converter.
Aqui tem um exemplo

tenclar

Agora estou com outro problema , deve ser do primefaces, pois na estrutura do xhtml abaixo o commandButton inserir não assiona o actionlistner mas se eu retirar o
selectItems o commandButton do Inserir funciona :

<h:form prependId="false">
                    <p:commandLink value="Novo" actionListener="#{cidadeController.prepAddCidade}" update="infoIns" oncomplete="dialogIns.show()" />
                </h:form>

 <p:dialog header="Inserir Cidade" widgetVar="dialogIns"  resizable="false" modal="false" showEffect="slide" width="500">
              <h:panelGrid id="infoIns" columns="2" style="margin-bottom:10px">
                     <h:form prependId="false" >
                      <h:outputLabel for="estado" value="Estado:" />
                      [b]<h:selectOneMenu id="estado" value="#{cidadeController.cidade.estado}">
                          <f:selectItems value="#{cidadeController.estadoSelectItems}"/>
                    </h:selectOneMenu>[/b]                       
                         
                    <h:outputLabel for="cid" value="Cidade:" />
                    <h:inputText id="cid" value="#{cidadeController.cidade.nome}"/>                 
                                 
                    <p:commandButton  actionListener="#{cidadeController.addCidade}" value="Inserir"/>
                    <p:commandButton   actionListener="#{cidadeController.cancelCidade}" value="Cancel"/>
                    <p:commandButton  actionListener="#{cidadeController.add}" value="texto"/>
                   
                </h:form>
                        
                </h:panelGrid>
                
        </p:dialog>
codigo :
public void prepAddCidade(ActionEvent actionEvent){
        cidade = new Cidade();        
      //  System.out.println("novo");
    }

    //nao assionado pelo commandButtom
public void addCidade(ActionEvent actionEvent){
        CidadeDAO dao = new CidadeDAO();           
        dao.addCidade(cidade);        
       // System.out.println("Inserindo");
        
    }
L

Onde vc diz qual converter seu selectOneMenu deve usar?
Tente debugar o teu converter, provavelmente esta dando agum erro de validação por isso nao e feito o submit qdo vc clica no botao,
coloque um h:messages na sua pagina para ver se emitiu algum erro de velidacao, ou verifique no console do servidor.

Criado 14 de julho de 2011
Ultima resposta 15 de jul. de 2011
Respostas 5
Participantes 4