ola
estou tentando usar um convert, porem, estou tendo alguns problemas
quando click no botao de cadastro eu tenho o seguinte erro
javax.servlet.ServletException: No enum const class br.com.krusst.precadastro.bean.ContatoTipo.0
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:256)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:362)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:488)
root cause
java.lang.IllegalArgumentException: No enum const class br.com.krusst.precadastro.bean.ContatoTipo.0
java.lang.Enum.valueOf(Unknown Source)
org.apache.el.lang.ELSupport.coerceToEnum(ELSupport.java:155)
org.apache.el.lang.ELSupport.coerceToType(ELSupport.java:359)
org.apache.el.ExpressionFactoryImpl.coerceToType(ExpressionFactoryImpl.java:46)
javax.faces.component.UISelectOne.matchValue(UISelectOne.java:177)
javax.faces.component.UISelectOne.validateValue(UISelectOne.java:137)
javax.faces.component.UIInput.validate(UIInput.java:875)
javax.faces.component.UIInput.executeValidate(UIInput.java:1078)
javax.faces.component.UIInput.processValidators(UIInput.java:670)
org.ajax4jsf.component.UIAjaxForm.processValidators(UIAjaxForm.java:80)
org.ajax4jsf.component.AjaxViewRoot$3.invokeContextCallback(AjaxViewRoot.java:434)
org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:234)
org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:450)
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:266)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:132)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:256)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:362)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:488)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
este erro comecou a acontecer depois que eu adicionei o seguinte convert
<h:selectOneMenu id="emailTipoId1" value="#{pessoaFisicaMB.pessoaFisica.email1.tipoId}">
<f:selectItems value="#{pessoaFisicaMB.pessoaFisica.contatoTipoEmailLista}"/>
<f:converter converterId="ContatoTipoConverter"/>
</h:selectOneMenu>
minha classe convert
package br.com.krusst.precadastro.util;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import br.com.krusst.precadastro.bean.ContatoTipo;
public class ContatoTipoConverter implements Converter{
@Override
public Object getAsObject(FacesContext context, UIComponent component, String valor) {
//if (valor.isEmpty()){return null;}
//return ContatoTipo.getContatoTipoPorId(valor);
return ContatoTipo.PESSOAL;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object valor) {
//return valor.toString();
return ContatoTipo.PESSOAL.toString();
}
}
as parte que estao comentadas, sao as “originais” porem, nos teste, acabei colocando direto nos metodos para ver se existia erro que eu nao conseguia perceber, porem ,das 2 formas o erro é o mesmo.
meu enum ContatoTipo
package br.com.krusst.precadastro.bean;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import javax.faces.model.SelectItem;
public enum ContatoTipo implements Serializable{
INICIO(0,"",0),
RESIDENCIA(1,"Residencial",1),
COMERCIAL(2,"Comercial",0),
CELULAR(3,"Celular",1),
PESSOAL(4,"Pessoal",2),
FIM(5,"",1);
private int id;
private String descr;
private int tipo;
private static Map<String, ContatoTipo> listaContatoTipoId;
private static Map<String, ContatoTipo> listaContatoTipoDescr;
static {
listaContatoTipoId = new HashMap<String, ContatoTipo>();
//Preencho a lista com o ID e o valor do Enum
for(ContatoTipo s : values()){listaContatoTipoId.put(Integer.toString(s.getId()), s);}
listaContatoTipoDescr = new HashMap<String, ContatoTipo>();
//Preencho a lista com o ID e o valor do Enum
for(ContatoTipo s : values()){listaContatoTipoDescr.put(s.getDescr(), s);}
}
ContatoTipo() {
}
ContatoTipo(int id, String descr, int tipo) {
this.id = id;
this.descr = descr;
this.tipo = tipo;
}
public int id() {
return this.id;
}
public String descr() {
return this.descr;
}
public int getId() {
return id;
}
public String getDescr() {
return descr;
}
public void setID(int id) {
this.id = id;
}
public void setDescr(String descr) {
this.descr = descr;
}
public int getTipo() {
return tipo;
}
public void setId(int id) {
this.id = id;
}
public void setTipo(int tipo) {
this.tipo = tipo;
}
public static Map<String, ContatoTipo> getListaContatoTipoId() {
return listaContatoTipoId;
}
public static Map<String, ContatoTipo> getListaContatoTipoDescr() {
return listaContatoTipoDescr;
}
public static void setListaContatoTipoId(Map<String, ContatoTipo> listaContatoTipoId) {
ContatoTipo.listaContatoTipoId = listaContatoTipoId;
}
public static void setListaContatoTipoDescr(Map<String, ContatoTipo> listaContatoTipoDescr) {
ContatoTipo.listaContatoTipoDescr = listaContatoTipoDescr;
}
public static ContatoTipo getContatoTipoPorDescr(String descr) {
return listaContatoTipoDescr.get(descr);
}
public static ContatoTipo getContatoTipoPorId(String id) {
return listaContatoTipoId.get(id);
}
//sobre-escrevi o metodo toString, porem, nao sei se é obrigatorio, pois no exemplo tinha sido sobre-escrito
public String toString(){
return PESSOAL.getDescr();
}
}
pessoal eu sobre-escrevi o metodo toString, porem, nao sei se é obrigatorio, pois no exemplo tinha sido sobre-escrito
bem, acho que com isso vcs ja tem as informacaoes, agora, o que eu estou fazeno de errado?
por que deste erro?
abs
T+