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>