I cannot get annotations such as @NotEmpty, @NotBlank and @NotNull to fire in my Spring Boot application.
I've followed this (maven) example:
https://spring.io/guides/gs/validating-form-input/
...and I don't see what I am doing wrong.
POJO:
import javax.validation.constraints.NotBlank;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class College
{
@NotBlank
private String collegeCode;
.
.
.
Spring controller:
@RequestMapping(value="/addCollege", method = RequestMethod.POST)
public String addCollege(@Valid @ModelAttribute("college") College college, BindingResult bindingResult, Model model, HttpSession session)
{
if(bindingResult.hasErrors()) //this is never true
{
logger.debug("Errors when adding new college!!!");
return "admin/colleges/addCollege";
}
collegeProcessor.saveCollege(college);
return getAllColleges(model, session);
}
Screen:
<form action="#" th:action="${addOrEdit} == 'add' ? @{/addCollege} : @{/updateCollege}" th:object="${college}" method="post">
<table class="table">
<tr>
<td>College Code</td>
<td><input size="10" name="collegeCode" th:field="*{collegeCode}"/></td>
<div id="errors" th:if="${#fields.hasErrors('collegeCode')}" th:errors="*{collegeCode}"></div>
</tr>
.
.
.
As well as @NotBlank, I have tried @NotEmpty and @NotNull, but the same thing happens. My screen does not validate the input, and allows a college object with an empty collegeCode to be saved.
The interesting thing is if I change my POJO to use the deprecated Hibernate validator instead...
import org.hibernate.validator.constraints.NotBlank;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class College
{
@NotBlank
private String collegeCode;
.
.
.
...then the validation DOES fire, and the screen prevents me from saving a College object with an empty collegeCode.
Can anyone tell me why my validation doesn't work when using the javax.validation.constraints validators?