Pessoal, boa tarde
Preciso da ajuda de vocês.
Estou fazendo um projeto que preciso atender a seguinte situação.
Tenho o ano, marca e modelo do veículo.
Tenho um combo para cada um.
Os modelos de veículos disponíveis dependem da marca e do ano do veículo que eu escolhi nos combos anteriores.
Se eu ainda não escolhi uma marca, o combo de modelos do veículo não pode exibir nada.
O comportamento dos combos deve ser o seguinte:
Toda vez que eu modifico o ano do veículo, o combo de marcas e de modelos, devem ser renderizados, ou seja, devem ser limpos.
Na primeira vez que entro na aplicação e escolho o ano, tudo funciona perfeitamente.
Mas depois disso, quando eu modifico o ano do veículo, o combo da marca e do modelo continuam populados, ou seja, eles precisariam ser limpos.
Acredito que estou quase lá, está faltando algum detalhe que não consigo descobrir.
Segue abaixo o código da minha página e logo após do Bean:
<h:outputText value="Ano do Veículo" />
<h:selectOneMenu id="ano" value="#{perfilHandler.perfil.veiculo.ano}">
<f:selectItems value="#{perfilHandler.listaDeAnos}" />
<a4j:support event="onchange" action="#{perfilHandler.popularMarcas}"
ajaxSingle="true" reRender="marca"/>
</h:selectOneMenu>
<h:outputText value="Marca" />
<h:selectOneMenu id="marca"
value="#{perfilHandler.perfil.veiculo.marca}">
<f:selectItems value="#{perfilHandler.listaDeMarcas}" />
<a4j:support event="onchange"
action="#{perfilHandler.popularModelos}" ajaxSingle="true"
reRender="modelo" />
</h:selectOneMenu>
<h:outputText value="Modelo" />
<h:selectOneMenu id="modelo"
value="#{perfilHandler.perfil.veiculo.modelo}">
<f:selectItems value="#{perfilHandler.listaDeModelos}" />
</h:selectOneMenu>
Fonte do bean:
public void popularMarcas() {
listaDeMarcas = new ArrayList();
Collection marcas = new MarcaVeiculoMock().obterTodasMarcasVeiculo();
Iterator it = marcas.iterator();
while (it.hasNext()) {
MarcaVeiculoVO vo = (MarcaVeiculoVO) it.next();
SelectItem item = new SelectItem(vo.getCodigoMarca(), vo
.getNomeMarca());
listaDeMarcas.add(item);
}
}
public void popularModelos() {
listaDeModelos = new ArrayList();
Collection modelos = new ModeloVeiculoMock().obterModelosPorAnoMarca(
perfil.getVeiculo().getMarca(), perfil.getVeiculo().getAno());
Iterator it = modelos.iterator();
while (it.hasNext()) {
ModeloVeiculoVO vo = (ModeloVeiculoVO) it.next();
SelectItem item = new SelectItem(vo.getCodigoModelo(), vo
.getNomeModelo());
listaDeModelos.add(item);
}
}
Obrigado pela atenção de todos.
Lucas

