Fórum erro relacionamento muitos para muitos + jsf selectitem #414466
23/03/2012
0
esta legal, o hibernate criou a tabela local_empresa a onde deve ir a chaves das tabela. Quando eu incluo um polo
somente a tabela polo e gravada na tabela onde tem as chaves das tabelas ainda nao gravo, pois bem estou listando
em um SelectItem a empresa paea associar ao polo, criei um classe para converter de objeto para string e de strinf para objeto,
mas quando eu seleciona a empresa no combo e depois clica em incluir me retorna este erro
Erro de conversão ao definir o valor 1 para null Converter.
Este 1 é o código da empresa que esta sendo associada
minha classe que converte
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Empresa empresa = new Empresa();
System.out.println(Codigo da empresa = + value);
if(value != null && value.trim().length() > 0 ){
Integer codigo = Integer.valueOf(value);
try{
EmpresaRN empresaRN = new EmpresaRN();
empresa = empresaRN.carregar(codigo);
return empresa;
}catch(Exception e){
throw new ConverterException(Não foi possível encontrar a empresa de código + value + .+e.getMessage());
}
}
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
System.out.println(Codigo da empresa = + value);
if (value != null){
Empresa empresa = (Empresa) value;
return empresa.getCodigoEmpresa().toString();
}
return ;
}
minha classe polo
@Entity
@Table(name=polo)
@SequenceGenerator(name=seq_polo,sequenceName=seq_polo)
public class Polo implements Serializable{
private static final long serialVersionUID = -6638112313261035555L;
@Id
@GeneratedValue(generator=seq_polo,strategy=GenerationType.AUTO)
@Column(name=id_polo)
private Integer codigoPolo;
@Column(name=nome,length=40)
private String nome ;
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name=polo_empresa,joinColumns={@JoinColumn(name=id_polo)},
inverseJoinColumns={@JoinColumn(name=id_empresa)})
@org.hibernate.annotations.ForeignKey(name = fk_polo_empresa)
private List<Empresa> empresa;
public Integer getCodigoPolo() {
return codigoPolo;
}
public void setCodigoPolo(Integer codigoPolo) {
this.codigoPolo = codigoPolo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public List<Empresa> getEmpresa() {
return empresa;
}
public void setEmpresa(List<Empresa> empresa) {
this.empresa = empresa;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((codigoPolo == null) ? 0 : codigoPolo.hashCode());
result = prime * result + ((empresa == null) ? 0 : empresa.hashCode());
result = prime * result + ((nome == null) ? 0 : nome.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;
Polo other = (Polo) obj;
if (codigoPolo == null) {
if (other.codigoPolo != null)
return false;
} else if (!codigoPolo.equals(other.codigoPolo))
return false;
if (empresa == null) {
if (other.empresa != null)
return false;
} else if (!empresa.equals(other.empresa))
return false;
if (nome == null) {
if (other.nome != null)
return false;
} else if (!nome.equals(other.nome))
return false;
return true;
}
}
Jose Boas
Curtir tópico
+ 0Posts
23/03/2012
Davi Costa
att Davi
Gostei + 0
23/03/2012
Jose Boas
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml
xmlns:h=http://java.sun.com/jsf/html
xmlns:f=http://java.sun.com/jsf/core
xmlns:ui=http://java.sun.com/jsf/facelets
xmlns:p=http://primefaces.org/ui>
<ui:composition>
<h:form id=edicaoempresa>
<h:messages/>
<h:panelGrid columns=2>
<h:outputLabel value=Empresa for=empresa/>
<h:outputText/>
<h:selectOneMenu id=empresa value=#{poloBean.poloEditado.empresa}>
<f:selectItem itemValue= itemLabel=Selecione a empresa/>
<f:selectItems var=pg itemValue=pg.codigoEmpresa value=#{empresaBean.empresaSelect}/>
</h:selectOneMenu>
<p:commandButton value=Incluir action=#{poloBean.vinculaEmpresa} update=:tab:edicaoempresa/>
</h:panelGrid>
</h:form>
</ui:composition>
</html>
Gostei + 0
23/03/2012
Jose Boas
<?xml version=1.0 encoding=ISO-8859-1 ?>
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml
xmlns:h=http://java.sun.com/jsf/html
xmlns:f=http://java.sun.com/jsf/core
xmlns:ui=http://java.sun.com/jsf/facelets
xmlns:p=http://primefaces.org/ui>
<ui:composition>
<h:form id=edicaoempresa>
<h:messages/>
<h:panelGrid columns=2>
<h:outputLabel value=Empresa for=empresa/>
<h:outputText/>
<h:selectOneMenu id=empresa value=#{poloBean.poloEditado.empresa}>
<f:selectItem itemValue= itemLabel=Selecione a empresa/>
<f:selectItems var=pg itemValue=pg.codigoEmpresa value=#{empresaBean.empresaSelect}/>
</h:selectOneMenu>
<p:commandButton value=Incluir action=#{poloBean.vinculaEmpresa} update=:tab:edicaoempresa/>
</h:panelGrid>
</h:form>
</ui:composition>
</html>
Gostei + 0
23/03/2012
Jose Boas
@ManagedBean(name=empresaBean)
@RequestScoped
public class EmpresaBean {
private Empresa empresaEditada = new Empresa();
private List<Empresa> lista;
private List<SelectItem> empresaSelect;
public List<SelectItem> getEmpresaSelect() {
if(this.empresaSelect == null){
this.empresaSelect = new ArrayList<SelectItem>();
EmpresaRN empresaRN = new EmpresaRN();
List<Empresa> empresa = empresaRN.listar();
SelectItem item = null;
for (Empresa emp : empresa){
item = new SelectItem(emp,emp.getNomeFantasia());
item.setEscape(false);
empresaSelect.add(item);
}
}
return empresaSelect;
}
public void setEmpresaSelect(List<SelectItem> empresaSelect) {
this.empresaSelect = empresaSelect;
}
public Empresa getEmpresaEditada() {
return empresaEditada;
}
public void setEmpresaEditada(Empresa empresaEditada) {
this.empresaEditada = empresaEditada;
}
public List<Empresa> getLista() {
if(this.lista == null){
EmpresaRN empresaRN = new EmpresaRN();
this.lista = empresaRN.listar();
}
return this.lista;
}
public void setLista(List<Empresa> lista) {
this.lista = lista;
}
public void novo(){
this.empresaEditada = new Empresa();
this.empresaEditada.setCodigoEmpresa(0);
}
public void editar(){
}
public void excluir(){
EmpresaRN empresaRN = new EmpresaRN();
empresaRN.excluir(this.empresaEditada);
this.lista = null;
}
public void salvar(){
EmpresaRN empresaRN = new EmpresaRN();
empresaRN.salvar(this.empresaEditada);
this.novo();
this.lista = null;
}
}
Gostei + 0
26/03/2012
Davi Costa
<h:selectOneMenu id=empresa value=#{poloBean.poloEditado.empresa}> // se value aqui é empresa
<f:selectItem itemValue= itemLabel=Selecione a empresa/> ///itemValue vazio?
<f:selectItems var=pg itemValue=pg.codigoEmpresa value=#{empresaBean.empresaSelect}/>// pq itemValue não é pg??
</h:selectOneMenu>
Lembre-se que fazendo essas alterações, talvez vai ter impactos no converter.
att Davi
Gostei + 0
26/03/2012
Jose Boas
Gostei + 0
28/03/2012
Jose Boas
Gostei + 0
28/03/2012
Jose Boas
Gostei + 0
28/03/2012
Jose Boas
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)