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

Valor não é valido JSF

Olá estou com um problema no meu código estou fazendo um formulario com Primefaces porém me deparei com esse problema:

Quando eu mando gravar o objeto ele diz que o valor não é valido.

Meu Objeto

public class Dialog {

    @Id
    @GeneratedValue
    private Long idDialog;
    @Column(length = 25)
    private String action;
    @Column(length = 50)
    private String nome;
    @Column(length = 125)
    private String descricao;

    //Gets and Sets

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((action == null) ? 0 : action.hashCode());
        result = prime * result
                + ((descricao == null) ? 0 : descricao.hashCode());
        result = prime * result
                + ((idDialog == null) ? 0 : idDialog.hashCode());
        result = prime * result + ((nome == null) ? 0 : nome.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;
        Dialog other = (Dialog) obj;
        if (action == null) {
            if (other.action != null)
                return false;
        } else if (!action.equals(other.action))
            return false;
        if (descricao == null) {
            if (other.descricao != null)
                return false;
        } else if (!descricao.equals(other.descricao))
            return false;
        if (idDialog == null) {
            if (other.idDialog != null)
                return false;
        } else if (!idDialog.equals(other.idDialog))
            return false;
        if (nome == null) {
            if (other.nome != null)
                return false;
        } else if (!nome.equals(other.nome))
            return false;
        return true;
    }

}

Meu Converter:

@FacesConverter(value = "dialogConverter", forClass = Dialog.class)
public class DialogConverter implements Converter {

    public Object getAsObject(FacesContext facesContext, UIComponent component,
            String submittedValue) {
        if (submittedValue.trim().equals("")) {
            return null;
        } else {
            Dialog dialog = new DialogDao().dialogById(new Long(submittedValue));
            return dialog;
        }

    }

    public String getAsString(FacesContext facesContext, UIComponent component,
            Object value) {
        if (value == null || value.equals("")) {
            return "";
        } else {
            return value.toString();
        }
    }

}

meu JSF:

<p:selectOneMenu value="#{subMenuBean.menu.dialog}" filter="true">
    <f:selectItems value="#{dialogBean.dlgs}" var="c" itemLabel="#{c.nome}" itemValue="#{c.idDialog}" />
    <f:converter converterId="dialogConverter" />
</p:selectOneMenu>

Alguem pode me ajudar ?

  • posta o stacktrace completo

    Cristian Urbainski   16 de set de 2013
  • Não tem stacktrace o erro é de validação do JSF: formSubMenu:j_idt46: Erro de validação: o valor não é válido formSubMenu:j_idt46: Erro de validação: o valor não é válido

    Gabriel Miranda Lyra   16 de set de 2013
  • ah ta, o problema esta no metodo equals do seu objeto, voce carregou o objeto do banco pelo id, na fase de validacao o jsf pega a lista de itens disponivel no componente pega cada item da lista e chama o metodo equals, comparando cada item da lista com o objeto que foi retornado pelo converter, se so retornar false ele da essa mensagem de erro, verifique por que o metodo equals não retorna true

    Cristian Urbainski   16 de set de 2013
  • Realmente era isso ele estava retornando um Long ao inves de retornar um objeto muito obrigado

    Gabriel Miranda Lyra   16 de set de 2013
  • que bem que resolvemos o seu problema, postei o meu comentario como resposta marca ela como certa entao, boa sorte ai.

    Cristian Urbainski   16 de set 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!

2 respostas

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