Hej. Używam w projekcie Spring Boot, Javy, Gradle i bazy danych MySql. Chcę zastosować walidację pól podczas wysyłania formularzy. W klasie encji mam coś takiego:
import javax.persistence.*;
import javax.validation.constraints.Digits;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Size(max = 20, message = "{Size.AnimalEntity.name.validation}")
@NotNull(message = "Pole nie może być puste!")
@Column(name = "animalsName")
private String nameString;
W Gradle dodane zależności:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa:2.1.2.RELEASE'
implementation 'org.springframework.boot:spring-boot-starter-security:2.1.2.RELEASE'
implementation 'org.springframework:spring-context-support:5.1.4.RELEASE'
implementation 'javax.mail:mail:1.5.0-b01'
implementation 'mysql:mysql-connector-java:8.0.14'
implementation 'org.hibernate.validator:hibernate-validator:6.1.0.Alpha2'
implementation 'org.apache.tomcat.embed:tomcat-embed-el:9.0.14'
implementation 'org.hamcrest:hamcrest:2.1'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.mockito:mockito-all:2.0.2-beta'
}
Formularz wygląda tak:
<form action="#" th:action="@{/processNewAnimal}" th:object="${newAnimal}" method="post" enctype="multipart/form-data" th:if="${#vars['freePlacesExist']}">
<fieldset>
<h1>Still free places:</h1> <h2 th:text="${#vars['freePlacesExist']}"></h2>
<legend>Tell us more about your pet:</legend>
<tr><td>Add an image: </td><td><input type="file" name="file"/></td></tr>
<h1>Name:</h1><br>
<input type="text" th:field="*{nameString}" class="name"/><br>
<div th:if="${#fields.hasErrors('nameString')}" th:errors="*{nameString}" >
<h2 th:text="#{NotNull.AnimalEntity.validation}">ERROR</h2>
</div>
<h1>Age:</h1><br>
<input type="text" th:field="*{age}"><br>
<input type="radio" th:field="*{specieString}" name="specie" value="dog"/>Dog<br>
<input type="radio" th:field="*{specieString}" name="specie" value="cat"/>Cat<br>
<textarea rowes="4" cols="70" th:field="*{animalsDescription}">Short description - max 450</textarea><br>
<input type="submit" value="Add"/>
</fieldset>
</form>
No i nic się nie dzieje, nawet jeśli pole jest puste lub wpiszę wartość spoza zakresu.
Proszę o pomysły, co może być nie tak.