Opa Pessoal beleza? estou com um problema que não estou conseguindo resolver.
Tenho uma combo Estado e outra cidade
Estado: [Escolha v]
Cidade: [Escolha v]
Em Estado tenho 2 estados cadastrados
RJ
SP
Quando eu clico no "v" de Estado isto é listado para mim e eu escolho RJ , é listado para mim todas as cidades do RJ
Eu não estou conseguindo fazer quando o usuário apaga o combo Estado não está apagando os dados do combo Cidade =/
Na verdade não está executando meu método quando o cara apaga somente quando ele escolhe =/
Abaixo segue o código:
<h:form id="meuForm">
<rich:panel header="Alter Client" style="align:center;width:500px">
<rich:comboBox>
<f:selectItems value="#{userBean.users}" />
</rich:comboBox>
<rich:comboBox id="estados" valueChangeListener="#{userBean.loadCidades}"
defaultLabel="Escolha"
selectFirstOnUpdate="false">
<f:selectItems value="#{userBean.estados}" />
<a4j:support event="onchange" reRender="cidades"></a4j:support>
</rich:comboBox>
<rich:comboBox immediate="true" id="cidades" defaultLabel="Escolha">
<f:selectItems value="#{userBean.cidades}" />
</rich:comboBox>
</rich:panel>
</h:form>
public class UserBean {
private User user = new User();
private List<User> users = new ArrayList<User>();
private List<Estado> estados = new ArrayList<Estado>();
private List<Cidade> cidades = new ArrayList<Cidade>();
private String estado;
public void setEstados(List<Estado> estados) {
this.estados = estados;
}
public void setCidades(List<Cidade> cidades) {
this.cidades = cidades;
}
public List<SelectItem> getUsers() {
List<SelectItem> select = new ArrayList();
for(User u : users){
SelectItem si = new SelectItem();
si.setLabel(u.getUsername());
si.setValue(u.getUsername());
select.add(si);
}
return select;
}
public List<SelectItem> getEstados() {
List<SelectItem> select = new ArrayList();
for(Estado u : estados){
SelectItem si = new SelectItem();
si.setLabel(u.getNome());
si.setValue(u.getNome());
select.add(si);
}
return select;
}
public List<SelectItem> getCidades() {
List<SelectItem> select = new ArrayList();
for(Cidade u : cidades){
if(u.getEstado().getNome().equals(estado)){
SelectItem si = new SelectItem();
si.setLabel(u.getNome());
si.setValue(u.getNome());
select.add(si);
}
}
return select;
}
public void setUsers(List<User> users) {
this.users = users;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public void loadCidades(ValueChangeEvent event){
estado = event.getNewValue().toString();
Session s = SessionFactory.getSession();
Criteria c = s.createCriteria(Cidade.class);
cidades = c.list();
}
}
Quem puder ajudar, agradeço. Valeu pessoal.