Bom dia!
Galera, procurei sobre esse erro, porém, não consegui resolver!
Em um relacionamento many to one, tenho um combobox, que mostra os dados como eu quero, porém, quando tento gravar aparece o erro...
* Erro de conversão ao definir o valor '4' para 'null Converter'. O valor '4' muda conforme a seleção do combobox, porém não grava.
<!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.prime.com.tr/ui">
<ui:insert name="menu">
<ui:include src="/cabecalho.xhtml" />
</ui:insert>
<h:body>
<h:panelGrid style="margin: auto">
<h:form>
<p:panel closable="false" header="Cadastro de Unidades">
<h:panelGrid>
<p:messages />
<h:panelGrid columns="2">
<h:outputText value="Secretaria:" />
<h:selectOneMenu value="#{unidadeBean.secretaria}"
immediate="true">
<f:selectItems value="#{secretariaBean.secretarias}"
var="secretaria" itemLabel="#{secretaria.nome}"
itemValue="#{secretaria.id}" />
</h:selectOneMenu>
<h:outputText value="Nome:" />
<h:inputText id="nome" value="#{unidadeBean.unidade.nome}"
required="true" requiredMessage="Campo Nome é Obrigatório" />
</h:panelGrid>
<h:commandButton value="Cadastrar" action="#{unidadeBean.gravar}" />
</h:panelGrid>
</p:panel>
</h:form>
</h:panelGrid>
</h:body>
</html>
os Beans:
package Bean;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpServletRequest;
import Dao.Dao;
import Dao.DaoFactory;
import Model.Secretaria;
@ManagedBean
@SessionScoped
public class SecretariaBean {
Secretaria secretaria = new Secretaria();
public void gravar() {
Dao<Secretaria> dao = new DaoFactory().getSecretariaDao();
dao.adiciona(secretaria);
secretaria = new Secretaria();
}
public List<Secretaria> getSecretarias() {
Dao<Secretaria> dao = new DaoFactory().getSecretariaDao();
return dao.listaTudo();
}
public List<SelectItem> getListaSecretaria() {
List<SelectItem> secretarias = new ArrayList<SelectItem>();
List<Secretaria> listaSec = getSecretarias();
secretarias.add(new SelectItem(null, ""));
for (Secretaria obj : listaSec) {
secretarias.add(new SelectItem(obj, obj.getNome()));
}
return secretarias;
}
public void remover() {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest req = (HttpServletRequest) context
.getExternalContext().getRequest();
Long idSecretaria = new Long((req.getParameter("id")));
Dao<Secretaria> dao = new DaoFactory().getSecretariaDao();
dao.remove(dao.procura(idSecretaria));
}
public Secretaria getSecretaria() {
return secretaria;
}
public void setSecretaria(Secretaria secretaria) {
this.secretaria = secretaria;
}
}
package Bean;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import Dao.Dao;
import Dao.DaoFactory;
import Model.Secretaria;
import Model.Unidade;
@ManagedBean
@SessionScoped
public class UnidadeBean {
Secretaria secretaria;
Unidade unidade = new Unidade();
public void gravar() {
Dao<Unidade> dao = new DaoFactory().getUnidadeDao();
unidade.setSecretaria(secretaria);
dao.adiciona(unidade);
unidade = new Unidade();
}
public Secretaria getSecretaria() {
return secretaria;
}
public void setSecretaria(Secretaria secretaria) {
this.secretaria = secretaria;
}
public List<Unidade> getUnidades() {
Dao<Unidade> dao = new DaoFactory().getUnidadeDao();
return dao.listaTudo();
}
public void remover() {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest req = (HttpServletRequest) context
.getExternalContext().getRequest();
Long idUnidade = new Long((req.getParameter("id")));
Dao<Unidade> dao = new DaoFactory().getUnidadeDao();
dao.remove(dao.procura(idUnidade));
}
public Unidade getUnidade() {
return unidade;
}
public void setUnidade(Unidade unidade) {
this.unidade = unidade;
}
}
]
package Model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="unidade")
public class Unidade {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@ManyToOne
Secretaria secretaria;
String nome;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Secretaria getSecretaria() {
return secretaria;
}
public void setSecretaria(Secretaria secretaria) {
this.secretaria = secretaria;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Obrigado galera!
DRauber
