Carregar SelectItem a partir de outro SelectItem

3 respostas
wazalsky

Estou estudando java e desenvolvendo uma aplicação. Surgiu esse problema que estou tentando resolver.

Tenho um jsp com o SelectOneMenu que carrega a tabela de clientes:

<h:outputText value=“Cliente: " style=“H1” />
<h:selectOneMenu id=“cboCliente” value=”#{revisoesBean.revisoes.codCliente}">
<f:selectItems value="#{clientesBean.listClientes}"/>
</h:selectOneMenu>

Quando for selecionado um cliente, estou querendo popular o SelectOneMenu com os projetos referentes a esse Cliente.

<h:outputText value=“Projeto: " style=“H1” />
<h:selectOneMenu id=“cboProjeto” value=”#{revisoesBean.revisoes.codprojeto}">
<f:selectItems value="#{projetosBean.listProjetos}"/>
</h:selectOneMenu>

Já criei o método que popula o combo de projetos:

public List getListProjetos() {

List listSelect = new LinkedList();

List listProjeto = listaProjetosPorCliente(codC);

listSelect.add(new SelectItem("…"));

for (Projetos projetoBean : listProjeto)

listSelect.add(new SelectItem(projetoBean.getCod(), projetoBean

.getDescricao()));

return listSelect;

}

Acredito que só falta fazer a chamada para o método. Como faço isso?

Essa deve ser muito fácil para vocês.
Obrigado pela ajuda.

3 Respostas

austre

Essa foi dificil para mim.

Passei dois dias para conseguir fazer :shock: .
Mas no final das contas é muito simples mesmo a implementação.

Eu descrevi como fiz a minha implementação desta mesma necessidade sua no seguinte tópico http://www.guj.com.br/posts/list/15/50249.java

Dá uma lida e tenta.
Valews!

wazalsky

Fiz como estava descrito naquela implementação:

<h:selectOneMenu id=“cboCliente” value="#{revisoesBean.revisoes.codCliente}"
valueChangeListener="#{projetosBean.selecionarProjeto}" onchange=“submit()”>
<f:selectItems value="#{clientesBean.listClientes}" />
</h:selectOneMenu>

<h:outputText value=“Projeto: " style=“H1” />
<h:selectOneMenu id=“cboProjeto” value=”#{revisoesBean.revisoes.codprojeto}">
<f:selectItems value="#{projetosBean.listProjetos}"/>
</h:selectOneMenu>

private int codC = 0;

public void selecionarProjeto(ValueChangeEvent vce){

codC = Integer.parseInt((String) vce.getNewValue());

}
public List getListProjetos() {

List listSelect = new LinkedList();

List listProjeto = listaProjetosPorCliente(codC);

listSelect.add(new SelectItem("…"));

for (Projetos projetoBean : listProjeto)

listSelect.add(new SelectItem(projetoBean.getCod(), projetoBean

.getDescricao()));

return listSelect;

}

Só não estou conseguindo fazer com que a var codC venha com o valor preenchido. Será que dá para ver onde está o erro?

wazalsky

Consegui resolver. Agora funcionou. Naquele link quem implementou fez o seguinte:

public void selecionarProjeto(ValueChangeEvent vce){

codC = Integer.parseInt((String) vce.getNewValue()); 

}

eu somente troquei pelo seguinte código:

public void selecionarProjeto(ValueChangeEvent vce){

codC = (Integer) vce.getNewValue()); 

}

Agora está funcionando.

Valeu pela ajuda.

Criado 27 de junho de 2008
Ultima resposta 30 de jun. de 2008
Respostas 3
Participantes 2