Espérons que cela aidera. La source est: Mastering Spring MVC
Vous devrez ajouter quelques autres éléments pour que la validation fonctionne. Premièrement, le contrôleur doit indiquer qu'il veut un modèle valide pour la soumission du formulaire. Ajout du javax.validation.Valid
comme wel comme
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
annotation au paramètre représentant la forme ne vient que:
@RequestMapping(value = "/profile", method = RequestMethod.POST)
public String saveProfile(@Valid ProfileForm profileForm,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "profile/profilePage";
}
System.out.println("save ok" + profileForm);
return "redirect:/profile";
}
Notez que vous ne redirige pas l'utilisateur si le formulaire contient des erreurs. Cela vous permettra de les afficher sur la même page Web. En parlant de cela, vous devez ajouter une place sur la page Web où ces erreurs seront affichées. Ajouter ces lignes profilePage.html
:
<form th:action="@{/profile}" th:object="${profileForm}"
....">
<div class="row">
<div class="input-field col s6">
<input th:field="${profileForm.twitterHandle}"
id="twitterHandle" type="text" th:errorclass="invalid"/>
<label for="twitterHandle">Twitter handle</label>
<div th:errors="*{twitterHandle}" class="redtext">
Error</div>
</div>
<div class="input-field col s6">
<input th:field="${profileForm.email}" id="email"
type="text" th:errorclass="invalid"/>
<label for="email">Email</label>
<div th:errors="*{email}" class="red-text">Error</div>
</div>
</div>
<div class="row">
<div class="input-field col s6">
<input th:field="${profileForm.birthDate}"
id="birthDate" type="text" th:errorclass="invalid" th:placeholder="${
dateFormat}"/>
<label for="birthDate">Birth Date</label>
<div th:errors="*{birthDate}" class="red-text">Error</
div>
</div>
</div>
<div class="row s12">
<button class="btn indigo waves-effect waves-light"
type="submit" name="save">Submit
<i class="mdi-content-send right"></i>
</button>
</div>
</form>
Oui En effet, Spring Boot prend soin de créer pour nous un grain de source de message. L'emplacement par défaut pour cette source de message est en
src/main/resources/messages.
properties.
Créer un tel paquet, et ajouter le texte suivant:
Size.profileForm.twitterHandle=Please type in your twitter user name
Email.profileForm.email=Please specify a valid email address
NotEmpty.profileForm.email=Please specify your email address
PastLocalDate.profileForm.birthDate=Please specify a real birth date
NotNull.profileForm.birthDate=Please specify your birth date
typeMismatch.birthDate = Invalid birth date format
.
Merci beaucoup! Comment pouvons-nous créer le «paquet» que vous avez mentionné pour le hibernation pur? C'est en fait la partie qui m'a le plus dérouté. –
Désolé, ce n'est pas pur Hibernate. Ces annotations proviennent de la spécification JSR-303, qui spécifie la validation du bean. L'implémentation la plus populaire de cette spécification est hibernate-validator, incluse dans Spring Boot. Pour pur Hibernate, vous devez rechercher des documentations –
Désolé, j'ai mal compris votre question. Je pensais que vous avez demandé la mise en œuvre du printemps. –