Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Enum

Tenho um enum de tipos de códigos do Febraban., mas ao tentar salvar, ele vai o valor correto, mas como String, ai da erro. O que pode ser feito ?

<option value="">Selecione um ...</option>

                <option th:each="codigoFebraban : ${T(br.com.netsoft.enuns.CodigoSegmentoFebrabanEnum).values()}" th:value="${codigoFebraban}" th:text="${codigoFebraban.descricao}">Segmentos</option>
7 respostas

Fala ai Guilherme, não entendi sua dúvida, poderia dar mais detalhes por favor?

O campo no objeto é um ENUM.

No html eu preenche a lista de enum no componente html

<option th:each="codigoFebraban : ${T(br.com.netsoft.enuns.CodigoSegmentoFebrabanEnum).values()}" th:value="${codigoFebraban}" th:text="${codigoFebraban.descricao}">Segmentos</option>

Ao tentar salvar, para este componente ele tenta salvar uma string. Ai mostra uma mensagem de erro.

Este é o erro

Field error in object 'entidadeEntity' on field 'codigoFebrabanSegmento': rejected value [Prefeitura]; codes [typeMismatch.entidadeEntity.codigoFebrabanSegmento,typeMismatch.codigoFebrabanSegmento,typeMismatch.br.com.netsoft.enuns.CodigoSegmentoFebrabanEnum,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [entidadeEntity.codigoFebrabanSegmento,codigoFebrabanSegmento]; arguments []; default message [codigoFebrabanSegmento]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'br.com.netsoft.enuns.CodigoSegmentoFebrabanEnum' for property 'codigoFebrabanSegmento'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@javax.persistence.Column @javax.persistence.Enumerated br.com.netsoft.enuns.CodigoSegmentoFebrabanEnum] for value 'Prefeitura'; nested exception is java.lang.IllegalArgumentException: No enum constant br.com.netsoft.enuns.CodigoSegmentoFebrabanEnum.Prefeitura]

Tem com postar a classe que esta recebendo o Enum na hora de salvar?

Posta como esta sendo montado seu select também.

Fico no aguardo.

Esta é a classe

https://gist.github.com/anonymous/4ff1407e2ac5de86960f5eee192bd975

Para resolver, criei este campo

private Integer codigoFebrabanId;

@Transient
public Integer getCodigoFebrabanId() {
    return codigoFebrabanId;
}

public void setCodigoFebrabanId(Integer codigoFebrabanId) {
    this.codigoFebrabanId = codigoFebrabanId;
}

Mas não era assim que eu queria, pois tenho que tratar antes de gravar e na visualização em edição e na pesquisa.

No modo Desenvolvedor -> Elements o campo value está recebendo o valor numero ou string ???

Não entendi Diogo ....