Oi galera!
Sou iniciante em JSF e estou quando tento salvar no banco de dados o sexo de uma pessoa (usando combo box)
tenho o seguinte erro:
Obs: Mais abaixo eu postei minhas classes e arquivos xhtml.
javax.servlet.ServletException: For input string: “FEMININO”
javax.faces.webapp.FacesServlet.service(FacesServlet.java:323)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
root cause
java.lang.NumberFormatException: For input string: “FEMININO”
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:449)
java.lang.Integer.parseInt(Integer.java:499)
persistence.RespostaPersisty.find(RespostaPersisty.java:15)
controller.RespostaConverter.getAsObject(RespostaConverter.java:21)
com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:167)
com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectOneValue(MenuRenderer.java:198)
com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(MenuRenderer.java:315)
javax.faces.component.UIInput.getConvertedValue(UIInput.java:1023)
javax.faces.component.UIInput.validate(UIInput.java:953)
javax.faces.component.UIInput.executeValidate(UIInput.java:1204)
javax.faces.component.UIInput.processValidators(UIInput.java:693)
javax.faces.component.UIForm.processValidators(UIForm.java:240)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081)
javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1159)
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:72)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
Classe Resposta
package model;
import java.io.Serializable;
import java.util.List;
import javax.persistence.*;
/**
- The persistent class for the resposta database table.
*/
@Entity
public class Resposta implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Integer codigo;
private String descricao;
@Column(name="numero_resposta")
private Integer numeroResposta;
//bi-directional many-to-one association to Entrevista
@OneToMany(mappedBy="resposta")
private List<Entrevista> entrevistas;
//bi-directional many-to-one association to Pergunta
@ManyToOne
@JoinColumn(name="codigo_pergunta")
private Pergunta pergunta;
public Resposta() {
}
public Integer getCodigo() {
return this.codigo;
}
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
public String getDescricao() {
return this.descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Integer getNumeroResposta() {
return this.numeroResposta;
}
public void setNumeroResposta(Integer numeroResposta) {
this.numeroResposta = numeroResposta;
}
public List<Entrevista> getEntrevistas() {
return this.entrevistas;
}
public void setEntrevistas(List<Entrevista> entrevistas) {
this.entrevistas = entrevistas;
}
public Pergunta getPergunta() {
return this.pergunta;
}
public void setPergunta(Pergunta pergunta) {
this.pergunta = pergunta;
}
@Override
public boolean equals(Object resposta){
Resposta r = (Resposta) resposta;
return getDescricao().equals(r.getDescricao());
}
@Override
public int hashCode(){
return descricao.hashCode();
}
@Override
public String toString() {
// TODO Auto-generated method stub
return descricao;
}
}
Classe RespostaPersisty
import model.Resposta;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class RespostaPersisty {
Session session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
public Resposta find(String codigo){
int c = Integer.parseInt(codigo);
Resposta resposta = (Resposta) session.get(Resposta.class, c);
return resposta;
}
}
Classe RespostaConverter
package controller;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import persistence.RespostaPersisty;
import model.Resposta;
@FacesConverter(forClass =Resposta.class)
public class RespostaConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
RespostaPersisty rp = new RespostaPersisty();
return (Object) rp.find(value);
}
/* (non-Javadoc)
* @see javax.faces.convert.Converter#getAsString(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)
*/
@Override
public String getAsString(FacesContext context, UIComponent component, Object objeto) {
// TODO Auto-generated method stub
return objeto.toString();
}
}
Meu gerenciador de beans
import java.util.List;
import javax.faces.bean.ManagedBean;
import model.Endereco;
import model.Entrevista;
import model.Pessoa;
import model.Resposta;
import persistence.EnderecoPersisty;
import persistence.EntrevistaPersisty;
import persistence.PerguntaPersisty;
import persistence.PessoaPersisty;
@ManagedBean(name = “managerbean”)
public class QuestionarioController {
private Resposta respostasexo;
private List listarespostasexo;
public Resposta getRespostasexo(){
return respostasexo;
}
public void setRespostasexo(Resposta respostasexo){
this.respostasexo = respostasexo;
}
public void setListarespostasexo(List<Resposta> listarespostasexo){
this.listarespostasexo = listarespostasexo;
}
public List<Resposta> getListarespostasexo(){
PerguntaPersisty pc = new PerguntaPersisty();
this.listarespostasexo = pc.find(1.1).getRespostas();
return this.listarespostasexo;
}
public void salvarentrevistaparte1(){
EntrevistaPersisty ep = new EntrevistaPersisty();
PessoaPersisty pp = new PessoaPersisty();
entrevista = new Entrevista();
entrevista.setPergunta(respostasexo.getPergunta());
entrevista.setResposta(respostasexo);
entrevista.setPessoa(pp.find(10));
ep.salvar(entrevista);
}
}
Classe PerguntaPersisty
import model.Pergunta;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class PerguntaPersisty {
Session session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
public Pergunta find(double codigo){
Pergunta pergunta = (Pergunta) session.get(Pergunta.class, codigo);
return pergunta;
}
}
O arquivo xhtml
<h:head><title>1. Identificação do Entrevistado</title></h:head>
<h:body>
<h:form id="form1">
<h:outputLabel> <h:outputText value="1.1 Sexo: "/></h:outputLabel>
<h:selectOneMenu id="selectsexo" value="#{managerbean.respostasexo}">
<f:selectItems value="#{managerbean.listarespostasexo}" var="respostasexo" itemLabel="#{respostasexo.descricao}" itemValue="#{respostasexo}"/>
</h:selectOneMenu>
<br/>
<br/>
<h:commandButton id="salvar" value="Salvar" action="#{managerbean.salvarentrevistaparte1}" />
</h:form>
</h:body>
Peço a ajuda de vocês para detectar esse erro…
Não sei mais o que fazer…Já tentei de tudo!!!
De qualquer forma muito obrigado pessoal!
Um abraço,
Jhonys