Ich hoffe, das hilft. Quelle ist: Mastering Spring MVC
Sie müssen ein paar weitere Dinge für die Validierung hinzufügen, um zu arbeiten. Zuerst muss der Controller sagen, dass er ein gültiges Modell bei der Formularübermittlung wünscht. Hinzufügen des javax.validation.Valid
als wel als
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
Anmerkung zum Parameter die Form darstellt, tut genau das:
@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";
}
Beachten Sie, dass Sie nicht den Benutzer umleiten, wenn das Formular Fehler enthält. Dadurch können Sie sie auf derselben Webseite anzeigen. Apropos, Sie müssen einen Platz auf der Webseite hinzufügen, wo diese Fehler angezeigt werden. Fügen Sie diese Zeilen in 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>
Ja, Frühling Stiefel sorgt für uns eine Nachrichtenquelle Bohne zu schaffen. Die Standardposition für diese Nachrichtenquelle ist in
src/main/resources/messages.
properties.
so erstellen ein Bündel, und fügen Sie den folgenden Text:
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
.
Vielen Dank !! Wie können wir das "Bündel" erstellen, das Sie für reinen Winterschlaf genannt haben? Das ist der Teil, der mich am meisten verwirrt hat. –
Sorry, das ist kein reiner Hibernate. Diese Anmerkungen stammen aus der JSR-303-Spezifikation, die die Bean-Validierung angibt. Die am weitesten verbreitete Implementierung dieser Spezifikation ist der Hibernate-Validator, der in Spring Boot enthalten ist. Für den reinen Ruhezustand müssen Sie nach Dokumentationen suchen –
Entschuldigung, ich verstehe Ihre Frage nicht. Ich dachte, du hättest nach einer Implementierung im Frühling gefragt. –