Campo HTML select + Enum em formulário

356 views
Skip to first unread message

Romário Mota

unread,
May 29, 2014, 7:18:00 AM5/29/14
to caelum-...@googlegroups.com
Olá,

Tenho no meu formulário um campo SELECT para o usuário selecionar o perfil. A opções deste campo são preenchidas por um Enum que eu coloco no request.
O que eu quero é colocar uma item opcional que sempre envia null para o controller. No entanto sempre que eu seleciono o item opcional ele me mostra uma mensagem com a chave is_not_a_valid_enum_value. O que eu quero é que ele mostre apenas a mensagem que eu definir na validação @NotEmpty e @NotNull, mas ele sempre mostra os Dois.

Teria uma forma de retira a mensagem do is_not_a_valid_enum_value e deixar apenas a mensagem do bean validation?

Desde já agradeço.

Segue os meus código:


Enum

public enum Perfil {
BENEFICIARIO("Beneficiário"), 
PRESTADOR("Prestador de Sáude"), 
COLABORADOR("Colaborador"),
ADMINISTRADOR("Administrador");
private String tipoPerfil;
private Perfil(String tipoPerfil) {
this.tipoPerfil = tipoPerfil;
}

public String getTipoPerfil() {
return tipoPerfil;
}

public void setTipoPerfil(String tipoPerfil) {
this.tipoPerfil = tipoPerfil;
}
public static List<Perfil> getPerfis(){
List<Perfil> lista = new ArrayList<Perfil>(); 
for(Perfil p : Perfil.values()){
lista.add(p);
}
return lista;
}
}

No Bean Usuario 

@Column(name="perfil") @Enumerated(EnumType.STRING)
@NotNull(message="{usuario.perfil.vazio}")
        @NotEmpty(message="{usuario.perfil.vazio}")
private Perfil perfil;

NO JSP

<select name="usuario.perfil" class="select" style="width: 200px;">
<option value=" ">-- Selecione --</option>
<c:forEach var="item" items="${perfis}">
<c:if test="${item eq usuario.perfil}">
<option selected="selected" value="${item}">${item.tipoPerfil}</option>
</c:if>
<c:if test="${item ne usuario.perfil}">
<option value="${item}">${item.tipoPerfil}</option>
</c:if>
</c:forEach>
</select>




Otávio Garcia

unread,
May 29, 2014, 8:23:32 AM5/29/14
to caelum-...@googlegroups.com

Coloca o value sem espaço, ou seja, value=""

Romário Mota

unread,
May 29, 2014, 8:33:55 AM5/29/14
to caelum-...@googlegroups.com
Olá Otávio,

Agora funcionou conforme eu queria.. 

obrigado.
Reply all
Reply to author
Forward
0 new messages