Bem pessoal, já vi alguns topicos com essa discursão, mas não consegui resolver meu problema ainda.
Eu nao estou conseguindo carregar um segundo combo, depois de selecionar um elemento do primeiro. Debugando, percebi que no bean controller de minha lista (classe controller que esta setada como request no faces-config), a lista está nula. coloquei um f:saveState na pagina pra tentar manter o estado da lista, mas nada…
Seguem abaixo, alguns trechos de codigo referente ao meu problema:
***************** FACES_CONFIG **************************
usuarioController
br.com.unimed.cg.agendamentoUnimed.controller.UsuarioController
request
<managed-bean>
<managed-bean-name>listas</managed-bean-name>
<managed-bean-class>br.com.unimed.cg.agendamentoUnimed.controller.Listas</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
*********************** Listas *********************************
public Map<String, String> findCooperadoByEspecialidade(String especialidade) {
if (especialidade != null && !"".equals(especialidade)){
CooperadoDao cooperadoDao = new CooperadoDaoImpl();
Map<String, String> mapCooperadosAux = new TreeMap<String, String>();
try {
List lista = cooperadoDao.getCooperadoByEspecialidade(especialidade);
if (lista != null) {
for (Cooperado cooperado : lista)
mapCooperadosAux.put(cooperado.getNome(), cooperado
.getNome());
}
this.mapCooperados = mapCooperadosAux; =============> aqui o this.mapCooperados está null. nao está guardando o estado.
} catch (Exception e) {
e.printStackTrace();
}
return this.mapCooperados;
}else{
this.mapCooperados.clear();
this.mapCooperados.put("", “”);
return this.mapCooperados;
}
}
***************** AgendamentoController ********************
public Map<String, String> filtraComboCooperado(){
Listas listas = new Listas();
return listas.findCooperadoByEspecialidade(this.especialidade);
}
********************** Pagina **********************************
<h:outputLabel value=“Especialidade: " for=“especialidadeC” style=“font-weight: bold”></h:outputLabel>
<h:panelGroup>
<h:selectOneMenu id=“especialidadeC” rendered=“true” value=”#{agendamentoController.especialidade}" binding="#{agendamentoController.especialidade}">
<a4j:support event=“onchange” action="#{agendamentoController.filtraComboCooperado}"
ajaxSingle=“true” reRender =“especialidadeC,cooperadoC”>
</a4j:support>
<f:selectItem id=“item1” itemLabel="-- Selecione --" itemValue=""/>
<f:selectItems value="#{listas.mapEspecialidades}"/>
</h:selectOneMenu>
</h:panelGroup>
<h:outputLabel value=“Cooperado: " for=“cooperadoC” style=“font-weight: bold”></h:outputLabel>
<h:panelGroup>
<t:saveState value=”#{listas.mapCooperados}"></t:saveState>
<h:selectOneMenu value="#{agendamentoController.cooperado}" id=“cooperadoC” rendered=“true”>
<f:selectItem id=“iC1” itemLabel="-- Selecione --" itemValue=""/>
<f:selectItems value="#{listas.mapCooperados}"/>
</h:selectOneMenu>
</h:panelGroup>