Atualizar um combo atraves de outro combo - JSF

2 respostas
liviaguedes

Olá galera GUJ,

Bom ja diversos topícos desse aki no guj, porem tenho uma duvida.

//TEnho um combo com convenios medicos que deve atualizar outro combo com os planos
<h:selectOneMenu id="selectConvenio" value="#{cadastroMB.cadastroMediator.clientes.clientesConvenio.idClinicaConvenio}" styleClass="campoInput" style="width:200px">
       <f:selectItems value="#{cadastroMB.listaConvenios}" />
       <a4j:support event="onchange" actionListener="#{cadastroMB.pesquisaMediator. ???? }" ajaxSingle="true" reRender="selectConvenioPlano"/>
</h:selectOneMenu>
//Combo dos planos.
<h:selectOneMenu id="selectConvenioPlano" value="#{cadastroMB.cadastroMediator.clientes.clientesConvenio.idClinicaConvenio}" styleClass="campoInput" style="width:200px">
         <f:selectItems value="#{cadastroMB.listaConvPlanos}"/>
</h:selectOneMenu>
eu tenho uma bean cadastroMB.java
int idConvenio = 0;
          
        // -> Planos vinculado aos convenios
        if ( ( "convenios".equals(this.modulo) ) || ( "pacientes".equals(this.modulo) ) )
             this.listaConvPlanos = this.pesquisaMediator.getListaConveniosPlanos(idConvenio);
classe PesquisaMediator.java que faz a intermediação entre a classe q faz a consulta no banco.
public ArrayList getListaConveniosPlanos(int id) {

        ConvenioDAO convenioDAO = new ConvenioDAO();

        ArrayList listaConveniosPlanos = new ArrayList();

        List<ClinicaConveniosPlanos> listaConvPlan = (ArrayList) convenioDAO.getListaConveniosPlanos(id);
        listaConveniosPlanos.add(new SelectItem ("0", "- Selecione -"));

        for (ClinicaConveniosPlanos cliConvPla : listaConvPlan) {
            listaConveniosPlanos.add(new SelectItem (Integer.toString(cliConvPla.getIdConvenioPlano()), cliConvPla.getDescricao()));
        }

        return listaConveniosPlanos;

    }
o meu problema acho q esta neste medoto da classe PesquisaMediator, pois preciso pegar o codigo pra verificar no banco.. mas nao sei como passsa esse codigo. pois na action so aparece os metodos que nao possui parametros, esse metodo q tem o id como parametro nao aparece.
<a4j:support event="onchange" actionListener="#{cadastroMB.pesquisaMediator. ??? }" ajaxSingle="true" reRender="selectConvenioPlano"/>
Da um erro:
/paciente.xhtml @207,190 actionListener="#{cadastroMB.pesquisaMediator.listaConveniosPlanos}": Method not found: [email removido](javax.faces.event.ActionEvent)
javax.faces.el.MethodNotFoundException: /paciente.xhtml @207,190 actionListener="#{cadastroMB.pesquisaMediator.listaConveniosPlanos}": Method not found: [email removido](javax.faces.event.ActionEvent)
        at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:71)
        at javax.faces.component.UICommand.broadcast(UICommand.java:376)
...........

Se alguem puder me ajudar??
vlw :wink:

2 Respostas

thiago.correa

Na verdade o uso do a4j:support é assim

<h:selectOneMenu id="status" value="#{estatisticaMBean.status}"
	rendered="#{estatisticaMBean.exibeFiltrosAtividadesOffLine}">
	<f:selectItems value="#{estatisticaMBean.listaStatus}" />
	<a4j:support event="onchange" action="#{estatisticaMBean.filtrarTiposUsuario}" ajaxSingle="true" reRender="panelTipoUsuarioLabel, panelTipoUsuario, tipoUsuario, detalhePesquisa, credenciadaId, municipioId, atendenteId" onsubmit="exibeProgressoAjax()" oncomplete="escondeProgressoAjax()"/>
	<f:attribute value="Status" name="label" />
</h:selectOneMenu>
e no meu Mbean eu tenho
public void filtrarTiposUsuario() {
		limparTipoUsuario();
		limparDetalharUsuario();
		limparMunicipiosCredenciadas();

		if (dataInicial != null && dataFinal != null && atividadeId != null) {
			listaTiposUsuario = limpaListagemCombosFacultativos();
			String sta = status != null && !"NA".equals(status) ? status : null;
			Hashtable<String, String> retStatus = this.getEstatisticaFacade().tiposUsuarioEncontradosPeriodo(dataInicial, dataFinal, atividadeId, atividadeOnline, sta);
			Enumeration<String> chaves = retStatus.keys();
			while (chaves.hasMoreElements()) {
				String chave = chaves.nextElement();
				listaTiposUsuario.add(new SelectItem(chave, retStatus.get(chave)));
			}
		}
	}

Para saber o valor selecionado basta usar o attributo value do teu combo que no meu caso é o estatisticaMBean.status

Mas no teu caso ele não tá achando o mpetodo listaConveniosPlanos dá uma olhada!

liviaguedes

bom realmente nao consigo pegar o id do combo… na verdade ele nem reconhece o metodo…

Criado 29 de abril de 2009
Ultima resposta 29 de abr. de 2009
Respostas 2
Participantes 2