SelectOneMenu Dinamicos(Resolvido)

2 respostas
R

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.

2 Respostas

B

<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…

R

Resolvi assim:

&lt;?xml version="1.0" encoding="ISO-8859-1" ?&gt;

&lt;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"&gt;

	&lt;h:panelGrid id="grid" columns="1"&gt;

		&lt;h:outputLabel for="marca" value="#{rotulo.marca}" /&gt;
		&lt;h:selectOneMenu id="marca"  value="#{veiculoBean.veiculo.marcaVeiculo.idMarca}" valueChangeListener="#{veiculoBean.modelosVeiculoByMarca}"  validatorMessage="#{rotulo.marca_required}" required="true" style="width:200px"&gt;
			&lt;f:selectItem itemLabel="Selecione" itemValue="Nenhum" /&gt;
			&lt;f:selectItems value="#{veiculoBean.marcasVeiculo}"/&gt;
			&lt;f:ajax event="change" render="modelo" /&gt;
		&lt;/h:selectOneMenu&gt;
		&lt;p:message for="marca" /&gt;
		
		&lt;h:outputLabel for="modelo" value="#{rotulo.modelo}" /&gt;
		&lt;h:selectOneMenu id="modelo"  value="#{veiculoBean.veiculo.modeloVeiculo.idModelo}" validatorMessage="#{rotulo.modelo_required}" required="true" style="width:200px"&gt;
			&lt;f:selectItem itemLabel="Selecione" itemValue="Nenhum" /&gt;
			&lt;f:selectItems value="#{veiculoBean.modelos}"/&gt;
		&lt;/h:selectOneMenu&gt;
		&lt;p:message for="modelo" /&gt;

		&lt;h:outputLabel for="chassiPadrao"  value="#{rotulo.chassiPadrao}"/&gt;
		&lt;h:inputText id="chassiPadrao" value="#{veiculoBean.veiculo.chassiPadrao}" validatorMessage="#{rotulo.chassiPadrao_required}" required="true" /&gt;
		&lt;p:message for="chassiPadrao" /&gt;
		
		&lt;h:outputLabel for="unidadeVenda"  value="#{rotulo.unidadeVenda}" /&gt;
		&lt;p:inputText id="unidadeVenda" value="#{veiculoBean.veiculo.unidadeVenda}" validatorMessage="#{rotulo.unidadeVenda_required}" required="true" /&gt;
		&lt;p:message for="unidadeVenda" /&gt;
	&lt;/h:panelGrid&gt;

&lt;/ui:composition&gt;
@ManagedBean(name = "veiculoBean")
public class VeiculoBean {

	private List&lt;SelectItem&gt; modelos = new ArrayList&lt;SelectItem&gt;();
	
	public List&lt;SelectItem&gt; getModelos() {
		return modelos;
	}

	public void setModelos(List&lt;SelectItem&gt; modelos) {
		this.modelos = modelos;
	}

	public List&lt;SelectItem&gt; getMarcasVeiculo() {

		List&lt;SelectItem&gt; marcas = new ArrayList&lt;SelectItem&gt;();

		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&lt;SelectItem&gt;();

		try {

			List&lt;ModeloVeiculo&gt; 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());
		}

	}

}
Criado 11 de outubro de 2011
Ultima resposta 11 de out. de 2011
Respostas 2
Participantes 2