1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Erro com converter (JSF)

No log aparece esse erro java.lang.ClassCastException: org.hupaaufal.rh.model.Perfil cannot be cast to org.hupaaufal.rh.model.Perfil

@FacesConverter(value = "convertPerfil")
public class ConversionPerfil implements Converter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        if (value != null && !"".equals(value)) {
            return this.getAttributesFrom(component).get(value);
        }
        return null;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        if (value != null && !"".equals(value)) {
            Perfil entity = (Perfil)value;

            //adiciona item como atributo do componemte.
            this.addAttribute(component, entity);

            Integer codigo = entity.getId();

            if (codigo != null) {
                return String.valueOf(codigo);
            }
        }
        return (String)value;
    }


    protected void addAttribute(UIComponent component, Perfil o) {
        // codigo da entidade em geral como chave neste caso.
        String key = o.getId().toString();
        this.getAttributesFrom(component).put(key, o);
    }

    protected Map<String, Object> getAttributesFrom(UIComponent component) {
        return component.getAttributes();
    }
}
  • Poste o código do converter.

    utluiz   31 de out de 2013
  • Se usar omnifaces nem precisa se preocupar com converter, ele tem um genérico que funciona pra qualquer caso.

    Cleiton Cardoso   01 de nov de 2013
  • Seu converter está correto, apenas atente-se na classe Perfil, de implementar Serializable e sobreescrever os métodos equals and hashCode e verifique se a lista dos dados está sendo construída de forma correta.

    Tirq   01 de nov de 2013
  • Tirq, acho que você tem razão. Não me lembro de ter sobrescrevido estes métodods. Pior que não tenho o código aqui em casa, apenas na empresa. Na segunda eu testo e digo se funcionou. Valeu.

    Richardson Nogueira   02 de nov de 2013
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags conversão jsf java primefaces ou faça a sua própria pergunta.