Fórum avAtualizar um selectOneMenu por outro selectOneMenu #485525
15/07/2014
0
Boa noite. Possuo 2 selectOneMenu (Estados e Cidades), onde: - ao selecionar um determinado estado em um selectOneMenu, o sistema deverá filtrar o outro selectOneMenu mostrando apenas as cidades do estado selecionado.
O procedimento acima não esta funcionando, o selectOneMenu de cidades fica nulo e ao selecionar o estado apresenta o erro: Erro de conversão ao definir o valor 'br.com.softwareOptimus.entidades.Estado@22' para 'null Converter'. Erro de conversão ao definir o valor 'br.com.softwareOptimus.entidades.Estado@22' para 'null Converter'.
Existe as informações no banco de dados corretamente. Segue o meu bean:
Segue o trecho do xhtml que executa o processo:
Creio que seja algum erro bobo, mas não estou conseguindo encontra-lo. Se alguem encontrar desde já agradeço.
Segue as classes Estado e Municipio:
O procedimento acima não esta funcionando, o selectOneMenu de cidades fica nulo e ao selecionar o estado apresenta o erro: Erro de conversão ao definir o valor 'br.com.softwareOptimus.entidades.Estado@22' para 'null Converter'. Erro de conversão ao definir o valor 'br.com.softwareOptimus.entidades.Estado@22' para 'null Converter'.
Existe as informações no banco de dados corretamente. Segue o meu bean:
package br.com.softwareOptimus.entidades.bens.geral;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import br.com.softwareOptimus.entidades.Estado;
import br.com.softwareOptimus.entidades.Municipio;
import br.com.softwareOptimus.entidades.RN.geral.EstadoRN;
import br.com.softwareOptimus.entidades.RN.geral.MunicipioRN;
@ManagedBean
@ViewScoped
public class GeralBean {
private List<Estado> estados;
private List<Municipio> municipios;
private EstadoRN estadoRN = new EstadoRN();
private MunicipioRN municipioRN = new MunicipioRN();
private Estado uf = new Estado();
public GeralBean(){
setEstados(this.estadoRN.listaEstado());
}
public List<Estado> getEstados() {
return estados;
}
public void setEstados(List<Estado> estados) {
this.estados = estados;
}
public Estado getUf() {
return uf;
}
public void setUf(Estado uf) {
this.uf = uf;
}
public List<Municipio> getMunicipios() {
return municipios;
}
public void setMunicipios(List<Municipio> municipios) {
this.municipios = municipios;
}
public void filtraEstado(){
this.municipios = municipioRN.listaMunicipios(uf);
}
}
Segue o trecho do xhtml que executa o processo:
Estado:
<p:selectOneMenu id="uf" value="#{geralBean.uf}">
<f:selectItems value="#{geralBean.estados}" var="listaEstados"
itemLabel="#{listaEstados.descricao}" />
<p:ajax update="municipios" event="change"
listener="#{geralBean.filtraEstado}" />
</p:selectOneMenu>
Município:
<p:selectOneMenu id="municipios">
<f:selectItem value="#{geralBean.municipios}"
var="listaMun" itemLabel="#{listaMun.descricao}" />
</p:selectOneMenu>
Creio que seja algum erro bobo, mas não estou conseguindo encontra-lo. Se alguem encontrar desde já agradeço.
Segue as classes Estado e Municipio:
package br.com.softwareOptimus.entidades;
import java.io.Serializable;
import javax.persistence.Cacheable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="tbMunicipio")
@Cacheable(true)
public class Municipio implements Serializable{
/**
*
*/
private static final long serialVersionUID = 7190834454652723153L;
@Id
@GeneratedValue
private Long idMunicipio;
private String descricao;
private Integer codIbge;
@ManyToOne
private Estado uf;
public Long getIdMunicipio() {
return idMunicipio;
}
public void setIdMunicipio(Long idMunicipio) {
this.idMunicipio = idMunicipio;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Integer getCodIbge() {
return codIbge;
}
public void setCodIbge(Integer codIbge) {
this.codIbge = codIbge;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((idMunicipio == null) ? 0 : idMunicipio.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Municipio other = (Municipio) obj;
if (idMunicipio == null) {
if (other.idMunicipio != null)
return false;
} else if (!idMunicipio.equals(other.idMunicipio))
return false;
return true;
}
}
package br.com.softwareOptimus.entidades;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import br.com.softwareOptimus.fiscal.GradeTributaria;
@Entity
@Table(name="tbEstado")
public class Estado implements Serializable{
/**
*
*/
private static final long serialVersionUID = -652813449840837138L;
@Id
@GeneratedValue
private Long idUf;
private String descricao;
private Integer codIbge;
@ManyToOne
private Pais pais;
@OneToMany(mappedBy = "estado")
private Collection<GradeTributaria> grades;
@OneToMany(mappedBy = "uf")
private Collection<Municipio> municipio;
public Collection<Municipio> getMunicipio() {
return municipio;
}
public void setMunicipio(Collection<Municipio> municipio) {
this.municipio = municipio;
}
public Collection<GradeTributaria> getGrades() {
return grades;
}
public void setGrades(Collection<GradeTributaria> grades) {
this.grades = grades;
}
public Integer getCodIbge() {
return codIbge;
}
public void setCodIbge(Integer codIbge) {
this.codIbge = codIbge;
}
public Pais getPais() {
return pais;
}
public void setPais(Pais pais) {
this.pais = pais;
}
public Long getIdUf() {
return idUf;
}
public void setIdUf(Long idUf) {
this.idUf = idUf;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((idUf == null) ? 0 : idUf.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Estado other = (Estado) obj;
if (idUf == null) {
if (other.idUf != null)
return false;
} else if (!idUf.equals(other.idUf))
return false;
return true;
}
}
Fabricio Jacob
Curtir tópico
+ 0
Responder
Posts
16/07/2014
Ronaldo Lanhellas
Você precisa criar uma classe Converter e adicioná-la no seu selectOneMenu, assim:
Essa classe será responsável por converter (como o próprio nome já diz) seu objeto para string e vice-versa.
<p:selectOneMenu id="municipios" converter="myConverter">
<f:selectItem value="#{geralBean.municipios}"
var="listaMun" itemLabel="#{listaMun.descricao}" />
</p:selectOneMenu>
Essa classe será responsável por converter (como o próprio nome já diz) seu objeto para string e vice-versa.
Responder
Gostei + 0
12/02/2015
Sgrandini
Ronaldo,
Também estou a procura de uma solução para minha aplicação. Você tem algum exemplo de uma classe Converter genérica que possa mostrar?
Grata.
Também estou a procura de uma solução para minha aplicação. Você tem algum exemplo de uma classe Converter genérica que possa mostrar?
Grata.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)