Para esclarecer melhor o meu problema, eu tenho duas tabelas no banco de dados, uma com todos os estados e outra com todas as cidades (assim eu creio), em uma aplicação para desktop eu consegui fazer com que, ao selecionar o estado em uma comboBox, a comboBox das cidades fosse preenchidas automaticamente somente com as cidades referentes a tal estado selecionado.
Neste mesmo projeto, agora para web, estou usando JSP e Hibernate, aí é que o bicho pegou, não tenho muitos conhecimentos de java, eu consegui pupular os menus tanto com os estados quanto com as cidades, porém, não da forma que gostaria.
Aqui está os códigos que tenho até agora.
A classe tb_estados que foi feito um mapeamento por ela.
package membrus.bean;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class tb_estados implements Serializable {
private Integer id;
private String uf;
private String nome;
@Id
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getUf() {
return uf;
}
public void setUf(String uf) {
this.uf = uf;
}
}
A Classe tb_cidades que também foi mapeada por anotação
package membrus.bean;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@Entity
public class tb_cidades implements Serializable {
@Id
private Integer id;
@ManyToOne
private tb_estados estado;
private String uf;
private String nome;
public tb_estados getEstado() {
return estado;
}
public void setEstado(tb_estados estado) {
this.estado = estado;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getUf() {
return uf;
}
public void setUf(String uf) {
this.uf = uf;
}
}
Meu ManegedBean que pupula tanto o menu estado quanto o menu cidade.
public class Cidades_EstadosBean {
public List<SelectItem> getEstado() {
Session session = FacesContextUtil.getRequestSession();
InterfaceDAO<tb_estados> estadosDao = new HibernateDAO<tb_estados>(tb_estados.class, session);
List<tb_estados> estados = estadosDao.getBeans();
session.getTransaction().commit();
List<SelectItem> selecionaEstados = new ArrayList<SelectItem>();
for (tb_estados estado: estados) {
selecionaEstados.add(new SelectItem(estado.getId().toString(), estado.getUf()));
}return selecionaEstados;
}
public List<SelectItem> getCidades() {
Session session = FacesContextUtil.getRequestSession();
InterfaceDAO<tb_cidades> cidadesDao = new HibernateDAO<tb_cidades>(tb_cidades.class, session);
List<tb_cidades> cidades = cidadesDao.getBeans();
List<SelectItem> selecionaCidades = new ArrayList<SelectItem>();
for (tb_cidades cidade: cidades) {
selecionaCidades.add(new SelectItem(cidade.getId().toString(), cidade.getNome()));
}
return selecionaCidades;
}
E a minha pagina onde eu chamo os estados e as cidades.
<f:view>
<div id="Pagina">
<div id="Principal">
<h3 align="center"> Cadastrar Congregações </h3><br><br>
<div id="CadastroCongregacao">
<h:form>
Congregação <h:inputText value="" />
Endereço <h:inputText value="" /> <br> <br><br>
<h:outputLabel value="Estado" />
<h:selectOneMenu id="selecionaEstados" value="#{membrosBean.codigoEstado}">
<f:selectItems value="#{cidades_EstadosBean.estado}"/>
</h:selectOneMenu>
<h:outputLabel value="Cidade" />
<h:selectOneMenu id="selecionaCidades" value="#{membrosBean.codigoEstado}">
<f:selectItems value="#{cidades_EstadosBean.cidades}" />
</h:selectOneMenu>
<br><br><br>
Pastor <h:inputText value="" />
Telefone <h:inputText value="" /> <br><br><br>
Email <h:inputText value="" /> <br><br><br>
</h:form>
<h:form>
<h:commandLink value="Voltar" action="retornar" />
</h:form>
</div>
</div>
</div>
</f:view>
Se alguem puder dá uma luz de como eu saio desta enrascada, ficarei muito agradecido, já pesquisei, tentei fazer sozinho mais não consegui.
Desde já agradeço a todos que se disponibilizarem para ajudar.