Ola, estou seguindo um curso e no momento em que é para salvar no banco ele não salva por causa de um “SelectOneMenu” que estou usando. Fiz um converter, coloquei o relacionamento entre as tabelas, mas mesmo assim apresenta erro. segue abaixo o erro e os codigos do projeto.
Jul 05, 2016 8:48:25 AM com.sun.faces.lifecycle.ProcessValidationsPhase execute
Advertência: For input string: "editora"
java.lang.NumberFormatException: For input string: "editora"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at java.lang.Long.<init>(Unknown Source)
at com.unespar.util.converter.EditoraConverter.getAsObject(EditoraConverter.java:26)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:171)
at com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectOneValue(MenuRenderer.java:201)
at com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(MenuRenderer.java:318)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.getConvertedValue(SelectOneMenuRenderer.java:58)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1034)
at javax.faces.component.UIInput.validate(UIInput.java:964)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1237)
at javax.faces.component.UIInput.processValidators(UIInput.java:702)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1220)
at javax.faces.component.UIForm.processValidators(UIForm.java:253)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1220)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1220)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1164)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Classe Entidade
``` package com.unespar.util.entidades;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;
import javax.persistence.ManyToOne;
@Entity
public class Acervo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String titulo;
private String volume;
private String serie;
private String isbn;
private String cdd_cdu;
private String pagina;
private String tamanho;
@ManyToOne
private PalavraChave palavraChave;
@ManyToOne
private Editora editora;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getVolume() {
return volume;
}
public void setVolume(String volume) {
this.volume = volume;
}
public String getSerie() {
return serie;
}
public void setSerie(String serie) {
this.serie = serie;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public String getCdd_cdu() {
return cdd_cdu;
}
public void setCdd_cdu(String cdd_cdu) {
this.cdd_cdu = cdd_cdu;
}
public String getPagina() {
return pagina;
}
public void setPagina(String pagina) {
this.pagina = pagina;
}
public String getTamanho() {
return tamanho;
}
public void setTamanho(String tamanho) {
this.tamanho = tamanho;
}
public PalavraChave getPalavraChave() {
return palavraChave;
}
public void setPalavraChave(PalavraChave palavraChave) {
this.palavraChave = palavraChave;
}
public Editora getEditora() {
return editora;
}
public void setEditora(Editora editora) {
this.editora = editora;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.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;
Acervo other = (Acervo) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
}
<h1>Classe DAO</h1>
package com.unespar.util.dao;
import java.io.Serializable;
import java.util.List;
import javax.inject.Inject;
import javax.naming.ldap.ManageReferralControl;
import javax.persistence.EntityManager;
import com.unespar.util.entidades.Acervo;
import com.unespar.util.entidades.Editora;
import com.unespar.util.entidades.PalavraChave;
public class AcervoDAO implements Serializable {
@Inject
private EntityManager em;
public void salvar(Acervo acervo){
em.merge(acervo);
}
public Acervo buscarPeloCodigo(Long id) {
return em.find(Acervo.class, id);
}
public List<Acervo> buscarTodos(){
return em.createQuery("from Acervo").getResultList();
}
}
<h1>Classe Service</h1>
package com.unespar.util.services;
import java.io.Serializable;
import javax.inject.Inject;
import com.unespar.util.dao.AcervoDAO;
import com.unespar.util.entidades.Acervo;
import com.unespar.util.jpa.Transactional;
public class CadastroAcervoService implements Serializable {
@Inject
private AcervoDAO acervoDAO;
private Acervo acervo;
@Transactional
public void salvar(Acervo acervo) throws NegocioException{
if(acervo.getTitulo() == null){
throw new NegocioException("CAdastrado com sucesso");
}
this.acervoDAO.salvar(acervo);
}
}
<h1>Classe Bean</1>
package com.unespar.util.controller;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import com.unespar.util.dao.AcervoDAO;
import com.unespar.util.dao.EditoraDAO;
import com.unespar.util.dao.PalavraChaveDAO;
import com.unespar.util.entidades.Acervo;
import com.unespar.util.entidades.Editora;
import com.unespar.util.entidades.PalavraChave;
import com.unespar.util.jsf.FacesUtil;
import com.unespar.util.services.CadastroAcervoService;
import com.unespar.util.services.NegocioException;
@Named
@ViewScoped
public class CadastroAcervoBean implements Serializable {
@Inject
private CadastroAcervoService cadastroAcervoService;
private Acervo acervo;
private List<PalavraChave> chavinhas;
@Inject
private PalavraChaveDAO palavraChaveDAO;
@Inject
private EditoraDAO editoraDAO;
private List<Editora> editoras;
public void salvar(){
try {
this.cadastroAcervoService.salvar(acervo);
FacesUtil.addSuccessMessage("cadstrado com sucesso");
this.limpar();
} catch (NegocioException e) {
FacesUtil.addErrorMessage(e.getMessage());
}
}
@PostConstruct
public void init(){
this.limpar();
this.chavinhas = palavraChaveDAO.buscarTodos();
this.editoras = editoraDAO.buscarTodos();
}
public void limpar(){
this.acervo = new Acervo();
}
public Acervo getAcervo() {
return acervo;
}
public void setAcervo(Acervo acervo) {
this.acervo = acervo;
}
public List<PalavraChave> getChavinhas() {
return chavinhas;
}
public List<Editora> getEditoras() {
return editoras;
}
}
<h1>Classe converter</h1>
package com.unespar.util.converter;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import com.unespar.util.cdi.CDIServiceLocator;
import com.unespar.util.dao.EditoraDAO;
import com.unespar.util.entidades.Editora;
@FacesConverter(forClass=Editora.class)
public class EditoraConverter implements Converter {
private EditoraDAO editoraDAO;
public EditoraConverter() {
this.editoraDAO = CDIServiceLocator.getBean(EditoraDAO.class);
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Editora retorno = null;
if (value != null) {
retorno = this.editoraDAO.buscarPeloCodigo(new Long(value));
}
return retorno;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value != null) {
Long id = ((Editora) value).getId();
String retorno = (id == null ? null : id.toString());
return retorno;
}
return "";
}
}
<h1>Codigo tela</h1>
<ui:composition template="/WEB-INF/template/LayoutPadrao.xhtml"
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"
xmlns:o=“http://omnifaces.org/ui”>
<ui:define name="titulo">Cadastro Acervo</ui:define>
<ui:define name="corpo">
<f:metadata>
<o:viewParam name="acervo" value="#{cadastroAcervoBean.acervo}" />
</f:metadata>
<h1>Novo acervo</h1>
<h:form id="frmCadastroAcervo">
<p:messages id="menssages" autoUpdate="true" closable="true"/>
<p:toolbar style="margin-top: 20px">
<p:toolbarGroup>
<p:commandButton value="Salvar" id="botaosalvar" action="#{cadastroAcervoBean.salvar}" update="frmCadastroAcervo"/>
</p:toolbarGroup>
<p:toolbarGroup align="right">
<p:button value="pesquisa" />
</p:toolbarGroup>
</p:toolbar>
<p:panelGrid columns="4" id="painel" style="Width: 100%; margin-top: 20px;" columnClasses="rotulo, campo">
<p:outputLabel value="Codigo" for="codigo"/>
<p:inputText id="codigo" size="20" maxlength="20" value="#{cadastroAcervoBean.acervo.id}" readonly="true"/>
<p:outputLabel value="Titulo" for="titulo"/>
<p:inputText id="titulo" size="20" maxlength="80" value="#{cadastroAcervoBean.acervo.titulo}" />
<p:outputLabel value="Volume" for="volume"/>
<p:inputText id="volume" size="20" maxlength="80" value="#{cadastroAcervoBean.acervo.volume}" />
<p:outputLabel value="Série" for="serie"/>
<p:inputText id="serie" size="20" maxlength="80" value="#{cadastroAcervoBean.acervo.serie}" />
<p:outputLabel value="ISBN" for="isbn"/>
<p:inputText id="isbn" size="20" maxlength="80" value="#{cadastroAcervoBean.acervo.isbn}" />
<p:outputLabel value="CDD/CDU" for="cdd"/>
<p:inputText id="cdd" size="20" maxlength="80" value="#{cadastroAcervoBean.acervo.cdd_cdu}" />
<p:outputLabel value="Pagina" for="pagina"/>
<p:inputText id="pagina" size="20" maxlength="80" value="#{cadastroAcervoBean.acervo.pagina}" />
<p:outputLabel value="Tamanho" for="tamanho"/>
<p:inputText id="tamanho" size="20" maxlength="80" value="#{cadastroAcervoBean.acervo.tamanho}" />
<p:outputLabel value="Editora" for="editora"/>
<p:selectOneMenu value="#{cadastroAcervoBean.acervo.editora}" id="editora">
<f:selectItem itemLabel="Selecione uma editora"/>
<f:selectItems value="#{cadastroAcervoBean.editoras}" var="editora" itemLabel="#{editora.nome}" itemValue="editora"/>
</p:selectOneMenu>
<p:outputLabel/>
</p:panelGrid>
</h:form>
</ui:define>
</ui:composition>