Consulta Banco de Dados em lista drop-down - JSF

16 respostas
B

Caros,
Não estou conseguindo trazer os nomes dos bairros que estão no meu Banco de Dados MySQL em uma lista drop-down.

Segue o trecho do código que estou inserindo e a forma que está aparecendo:

<h:outputLabel value=“Lista Bairros” for=“recruiterId” />

<h:selectOneMenu id=“ba_Nome” value="#{bairrosController.selected.baNome}">

<f:selectItems value="#{bairrosController.itemsAvailableSelectOne}"/>

</h:selectOneMenu>

Estou travado com isso. AJUDA!

16 Respostas

B

Segue trecho do código:

R
<h:selectOneMenu id="ba_Nome" value="#{bairrosController.selected.baNome}">
     <f:selectItems value="#{bairrosController.itemsAvailableSelectOne}" var="bairro"/>
     <h:outputText value="#{bairro.descricao}" />
</h:selectOneMenu>

Espero que o ajude, vc precisa atribuir uma variavel a ser interada e assim acessar seus atributos.
Obs.: Não coloque print de código a não ser que queira mostrar algum erro especifico que a IDE aponte. Dificulta a gente reproduzir seu código com sugestões.

B

Companheiro, permanece sem trazer o resultado na lista drop-down.
Tem alguma outra sugestão?

R

Trocou os nomes dos atributos? Qual atributo voce quer que apareça no drop é este baNome da Classe Bairro?
Tenta assim:

<f:selectItems value="#{bairrosController.itemsAvailableSelectOne}" var="bairro"
   			itemLabel="#{bairro.baNome}" itemValue="#{bairro.baNome}" />

A sim remova os anteriores …

B

Amigo, não tenho muita experiência com JSF. Estou empancado aqui,

<h:outputLabel value=“Lista Bairros”/>

<h:selectOneMenu id=“ba_Nome” value="#{bairrosController.selected.baNome}">

<f:selectItems value="#{bairrosController.itemsAvailableSelectOne}" var=“bairro"

itemLabel=”#{bairro.baNome}" itemValue="#{bairro.baNome}" />

</h:selectOneMenu>
R

Sim … faz assim post o codigo dessa classe Bairro por gentileza. Tá dando algum erro no console do eclipse/netbeans?

B

Uso o Netbeans. Não apresenta erro, apenas não apresenta o resultado correto.

B

R

E a classe Bairro?

B

Não estou conseguindo copiar o código da Classe, pois informa que como usuário novo eu não posso mencionar outros usuário nem ao mesmo postar anexo. Vou ter que mandar infelizmente o print da classe “Bairros”.

R

Não está dando p/ vc colocar pq acho que tem “@” com alguma descricao que identifica como usuário. Pois bem só posta o trecho de código do return dessa lista. Qual a tipagem dela por favor.

B

Tive que criar uma conta nova pois ultrapassou minha cota do dia (rsrsrs).

Pronto. Fiz a substituição de tudo que tinha por [ARROBA] . Segue o código completo:

/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */
    package pct_java2up;
import java.io.Serializable;

import javax.persistence.Basic;

import javax.persistence.Column;

import javax.persistence.Entity;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

import javax.persistence.NamedQueries;

import javax.persistence.NamedQuery;

import javax.persistence.Table;

import javax.validation.constraints.NotNull;

import javax.validation.constraints.Size;

import javax.xml.bind.annotation.XmlRootElement;
/**

*

*

*/

[ARROBA]Entity

[ARROBA]Table(name = bairros)

[ARROBA]XmlRootElement

[ARROBA]NamedQueries({

[ARROBA]NamedQuery(name = Bairros.findAll, query = SELECT b FROM Bairros b)

, [ARROBA]NamedQuery(name = Bairros.findByBaId, query = SELECT b FROM Bairros b WHERE b.baId = :baId)

, [ARROBA]NamedQuery(name = Bairros.findByBaNome, query = SELECT b FROM Bairros b WHERE b.baNome = :baNome)})

public class Bairros implements Serializable {
private static final long serialVersionUID = 1L;
[ARROBA]Id
[ARROBA]Basic(optional = false)
[ARROBA]NotNull
[ARROBA]Column(name = "ba_id")
private Integer baId;
[ARROBA]Size(max = 50)
[ARROBA]Column(name = "ba_nome")
private String baNome;

public Bairros() {
}

public Bairros(Integer baId) {
    this.baId = baId;
}

public Integer getBaId() {
    return baId;
}

public void setBaId(Integer baId) {
    this.baId = baId;
}

public String getBaNome() {
    return baNome;
}

public void setBaNome(String baNome) {
    this.baNome = baNome;
}

[ARROBA]Override
public int hashCode() {
    int hash = 0;
    hash += (baId != null ? baId.hashCode() : 0);
    return hash;
}

[ARROBA]Override
public boolean equals(Object object) {
    // TODO: Warning - this method won't work in the case the id fields are not set
    if (!(object instanceof Bairros)) {
        return false;
    }
    Bairros other = (Bairros) object;
    if ((this.baId == null && other.baId != null) || (this.baId != null && !this.baId.equals(other.baId))) {
        return false;
    }
    return true;
}

[ARROBA]Override
public String toString() {
    return "pct_java2up.Bairros[ baId=" + baId + " ]";
}

}

B

Tem também a BairrosController

package pct_java2up;

import pct_java2up.util.JsfUtil;
import pct_java2up.util.PaginationHelper;

import java.io.Serializable;

import java.util.ResourceBundle;

import javax.ejb.EJB;

import javax.inject.Named;

import javax.enterprise.context.SessionScoped;

import javax.faces.component.UIComponent;

import javax.faces.context.FacesContext;

import javax.faces.convert.Converter;

import javax.faces.convert.FacesConverter;

import javax.faces.model.DataModel;

import javax.faces.model.ListDataModel;

import javax.faces.model.SelectItem;
[ARROBA]Named(bairrosController)

[ARROBA]SessionScoped

public class BairrosController implements Serializable {
private Bairros current;
private DataModel items = null;
[ARROBA]EJB
private pct_java2up.BairrosFacade ejbFacade;
private PaginationHelper pagination;
private int selectedItemIndex;

public BairrosController() {
}

public Bairros getSelected() {
    if (current == null) {
        current = new Bairros();
        selectedItemIndex = -1;
    }
    return current;
}

private BairrosFacade getFacade() {
    return ejbFacade;
}

public PaginationHelper getPagination() {
    if (pagination == null) {
        pagination = new PaginationHelper(10) {

            [ARROBA]Override
            public int getItemsCount() {
                return getFacade().count();
            }

            [ARROBA]Override
            public DataModel createPageDataModel() {
                return new ListDataModel(getFacade().findRange(new int[]{getPageFirstItem(), getPageFirstItem() + getPageSize()}));
            }
        };
    }
    return pagination;
}

public String prepareList() {
    recreateModel();
    return "List";
}

public String prepareView() {
    current = (Bairros) getItems().getRowData();
    selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
    return "View";
}

public String prepareCreate() {
    current = new Bairros();
    selectedItemIndex = -1;
    return "Create";
}

public String create() {
    try {
        getFacade().create(current);
        JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("BairrosCreated"));
        return prepareCreate();
    } catch (Exception e) {
        JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
        return null;
    }
}

public String prepareEdit() {
    current = (Bairros) getItems().getRowData();
    selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
    return "Edit";
}

public String update() {
    try {
        getFacade().edit(current);
        JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("BairrosUpdated"));
        return "View";
    } catch (Exception e) {
        JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
        return null;
    }
}

public String destroy() {
    current = (Bairros) getItems().getRowData();
    selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
    performDestroy();
    recreatePagination();
    recreateModel();
    return "List";
}

public String destroyAndView() {
    performDestroy();
    recreateModel();
    updateCurrentItem();
    if (selectedItemIndex >= 0) {
        return "View";
    } else {
        // all items were removed - go back to list
        recreateModel();
        return "List";
    }
}

private void performDestroy() {
    try {
        getFacade().remove(current);
        JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("BairrosDeleted"));
    } catch (Exception e) {
        JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
    }
}

private void updateCurrentItem() {
    int count = getFacade().count();
    if (selectedItemIndex >= count) {
        // selected index cannot be bigger than number of items:
        selectedItemIndex = count - 1;
        // go to previous page if last page disappeared:
        if (pagination.getPageFirstItem() >= count) {
            pagination.previousPage();
        }
    }
    if (selectedItemIndex >= 0) {
        current = getFacade().findRange(new int[]{selectedItemIndex, selectedItemIndex + 1}).get(0);
    }
}

public DataModel getItems() {
    if (items == null) {
        items = getPagination().createPageDataModel();
    }
    return items;
}

private void recreateModel() {
    items = null;
}

private void recreatePagination() {
    pagination = null;
}

public String next() {
    getPagination().nextPage();
    recreateModel();
    return "List";
}

public String previous() {
    getPagination().previousPage();
    recreateModel();
    return "List";
}

public SelectItem[] getItemsAvailableSelectMany() {
    return JsfUtil.getSelectItems(ejbFacade.findAll(), false);
}

public SelectItem[] getItemsAvailableSelectOne() {
    return JsfUtil.getSelectItems(ejbFacade.findAll(), true);
}

public Bairros getBairros(java.lang.Integer id) {
    return ejbFacade.find(id);
}

[ARROBA]FacesConverter(forClass = Bairros.class)
public static class BairrosControllerConverter implements Converter {

    [ARROBA]Override
    public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
        if (value == null || value.length() == 0) {
            return null;
        }
        BairrosController controller = (BairrosController) facesContext.getApplication().getELResolver().
                getValue(facesContext.getELContext(), null, "bairrosController");
        return controller.getBairros(getKey(value));
    }

    java.lang.Integer getKey(String value) {
        java.lang.Integer key;
        key = Integer.valueOf(value);
        return key;
    }

    String getStringKey(java.lang.Integer value) {
        StringBuilder sb = new StringBuilder();
        sb.append(value);
        return sb.toString();
    }

    [ARROBA]Override
    public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
        if (object == null) {
            return null;
        }
        if (object instanceof Bairros) {
            Bairros o = (Bairros) object;
            return getStringKey(o.getBaId());
        } else {
            throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + Bairros.class.getName());
        }
    }

}

}

R

rsrs Cara apaga o toString da classe e testa novamente. Se não der certo me retorna como está declarado isto

EDIT:
Cara vi aqui, desculpa as palavras mas está uma bagunça isso ai…É mais simples que pareça. Converter fazendo papel de controller, retorno dos resultados não tipado … É algum trabalho de faculdade isto? Te obriga a fazer dessa maneira? Posso sugerir um tutorial?

B

Amigo,
É um projeto pessoal, mas deu certo quando eu alterei para:

public String toString() {

return baNome;

}

Muito obrigado pela paciência, eu aceito o Tutorial.
Grato.

R

Que bom que deu certo. Este cara tem excelentes tutoriais.

Bons estudos!

Criado 29 de novembro de 2016
Ultima resposta 29 de nov. de 2016
Respostas 16
Participantes 3