Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Ajuda com Enum

Fala pessoal, tudo bem? estou com uma dúvida enorme. Pela primeira vez estou tentando trabalhar com enum em um sistema que estou montando. olha meu enum

public enum TipoMedida {
    COMPARECIMENTO_MENSAL("Comparecimento Mensal em Juízo e na Central de Egressos"),
    PROIBICAO_AUSENTAR("Proibição de ausentar-se da comarca sem autorização"),
    PROIBICAO_CONTATO("Proibido contato com a vítima ou familiares"),
    RECOLHIMENTO_DOMICILIAR("Recolhimento domiciliar, inclusive aos sábados, domingos e feriados, após as 23:00h");

    private String descricao;

    TipoMedida(String descricao) {
        this.descricao = descricao;
    }
    public String getDescricao() {
        return descricao;
    }
}

Na minha página web, eu preciso exibir todos esses enums, como uma lista de checkbox para que o usuário possa escolher quais deseja ativar

Em meu bean faço o seguinte:

public TipoMedida[] getTipoMedidas() {
        return TipoMedida.values();
    }

e minha página estou usando o seguinte:

<h:selectManyCheckbox value="#medidaCautelarBean.medidaCautelar.tipoMedida}" layout="pageDirection">
              <f:selectItems value="#medidaCautelarBean.tipoMedidas}" itemValue="#{tipo}"  var="tipo" itemLabel="#{tipo.descricao}"/>
</h:selectManyCheckbox>

o resultado final está legal conforme podem ver nesse print

http://prntscr.com/dd5r6x e nesse http://prntscr.com/dd5rg9

o meu problema está sendo agora na hora de gravar, como eu transformo esse enum, em uma lista? como faço para saber a lista de quais enum ele selecionou e salvar no banco?

Quando tento transformar o meu enum em list ele aparece erro dizendo que um atributo basico nao pode ser um container. Como proceder agora?

5 respostas

Olá.

Onde você quer salvar essa lista de Enums? Se for como entendi, você pode recuperar os enums selecionados e salvá-los num setTipoMedidas(TipoMedida[]) que vai receber um novo array com os enums selecionados.

Oi Jilles,

Você chegou a criar a propriedade ou o setter para tipoMedidas? Cria como um array mesmo e no setter faz a conversão para uma lista usando o método Arrays.asList(arrayDeElementos);

Abraço!

então eu crio, e ele da mensagem de erro quando mudo para array

http://prntscr.com/dd8t4j

É exatamente isso que quero Thiago, preciso salvar em uma list para gravar no banco todas as alternativas selecionadas, porém ele nao deixa eu criar um array :(

solução!

Pessoal, consegui chegar a uma solução

tive que usar a anotação ElementCollection, meu código ficou assim

   @ElementCollection(targetClass = TipoMedida.class)
    @Enumerated(EnumType.STRING)
    private List<TipoMedida> tipoMedida;

por enquanto isso resolveu