Bom dia,
Alguém poderia me ajudar a criar um combo dinamico, apenas com JSF 2??? não estou usando prime/rich…
Tenho uma combo com Marcas de Veículo, e outra com os Modelos que deverão ser dessa Marca selecionada.
Desde já agradeço.
Bom dia,
Alguém poderia me ajudar a criar um combo dinamico, apenas com JSF 2??? não estou usando prime/rich…
Tenho uma combo com Marcas de Veículo, e outra com os Modelos que deverão ser dessa Marca selecionada.
Desde já agradeço.
<h:selectOneMenu id="marcaCarro" value="#{mb.marcaCarro}" >
<f:selectItem itemLabel="Selecione a marca do carro" itemValue="" />
<f:selectItem itemLabel="Ford" itemValue="ford" />
<f:selectItem itemLabel="BMW" itemValue="bmw" />
<f:selectItem itemLabel="Mercedes" itemValue="mercedes" />
<a4j:support event="onchange" action="#{mb.buscaModelosCarro}" reRender="selectModelosCarro" />
</h:selectOneMenu>
<h:selectOneMenu id="selectModelosCarro" value="#{mb.modeloCarro}" >
<f:selectItem id="nenhum" itemLabel="Selecione o modelo do carro" itemValue="" />
<f:selectItem itemLabel="#{mb.modeloListCarro}" itemValue="#{mb.modeloListCarro}" />
</h:selectOneMenu>
no mb, faz uma busca no banco que retorne a LISTA de modelos…
Resolvi assim:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<ui:composition 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:panelGrid id="grid" columns="1">
<h:outputLabel for="marca" value="#{rotulo.marca}" />
<h:selectOneMenu id="marca" value="#{veiculoBean.veiculo.marcaVeiculo.idMarca}" valueChangeListener="#{veiculoBean.modelosVeiculoByMarca}" validatorMessage="#{rotulo.marca_required}" required="true" style="width:200px">
<f:selectItem itemLabel="Selecione" itemValue="Nenhum" />
<f:selectItems value="#{veiculoBean.marcasVeiculo}"/>
<f:ajax event="change" render="modelo" />
</h:selectOneMenu>
<p:message for="marca" />
<h:outputLabel for="modelo" value="#{rotulo.modelo}" />
<h:selectOneMenu id="modelo" value="#{veiculoBean.veiculo.modeloVeiculo.idModelo}" validatorMessage="#{rotulo.modelo_required}" required="true" style="width:200px">
<f:selectItem itemLabel="Selecione" itemValue="Nenhum" />
<f:selectItems value="#{veiculoBean.modelos}"/>
</h:selectOneMenu>
<p:message for="modelo" />
<h:outputLabel for="chassiPadrao" value="#{rotulo.chassiPadrao}"/>
<h:inputText id="chassiPadrao" value="#{veiculoBean.veiculo.chassiPadrao}" validatorMessage="#{rotulo.chassiPadrao_required}" required="true" />
<p:message for="chassiPadrao" />
<h:outputLabel for="unidadeVenda" value="#{rotulo.unidadeVenda}" />
<p:inputText id="unidadeVenda" value="#{veiculoBean.veiculo.unidadeVenda}" validatorMessage="#{rotulo.unidadeVenda_required}" required="true" />
<p:message for="unidadeVenda" />
</h:panelGrid>
</ui:composition>
@ManagedBean(name = "veiculoBean")
public class VeiculoBean {
private List<SelectItem> modelos = new ArrayList<SelectItem>();
public List<SelectItem> getModelos() {
return modelos;
}
public void setModelos(List<SelectItem> modelos) {
this.modelos = modelos;
}
public List<SelectItem> getMarcasVeiculo() {
List<SelectItem> marcas = new ArrayList<SelectItem>();
try {
MarcaVeiculoDAO dao = MarcaVeiculoDAOHibernate.getInstance();
for (MarcaVeiculo marcaVeiculo : dao.list(1, new String[]{"descricao"})) {
marcas.add(new SelectItem(marcaVeiculo.getIdMarca(), marcaVeiculo.getDescricao()));
marcaVeiculo = null;
}
} catch (DAOException e) {
JsfUtil.addErrorMessageExcecao(e, e.getMessage());
}
return marcas;
}
public void modelosVeiculoByMarca(ValueChangeEvent evento) {
ModeloVeiculoDAO dao = ModeloVeiculoDAOHibernate.getInstance();
String idMarca = evento.getNewValue().toString();
modelos = new ArrayList<SelectItem>();
try {
List<ModeloVeiculo> tmp;
if(idMarca != null){
tmp = dao.listByMarca(1, Integer.parseInt(idMarca), new String[]{"descricao"});
}else{
tmp = dao.list(1, new String[]{"descricao"});
}
for (ModeloVeiculo modeloVeiculo : tmp) {
modelos.add(new SelectItem(modeloVeiculo.getIdModelo(), modeloVeiculo.getDescricao()));
modeloVeiculo = null;
}
} catch (DAOException e) {
JsfUtil.addErrorMessageExcecao(e, e.getMessage());
}
}
}