0

Ich verwende derzeit Hibernate-Distribution-3.6.6.Final. Neu im Hibernate-Validator.Hibernate Validator ruft Fehlermeldungen ab, ohne Spring Framework zu verwenden

Problem: Wie soll ich Fehlermeldungen erhalten, die ich durch Hinzufügen von Anmerkungen zu Databean/Formbean erhalten habe? Ich weiß im Frühling, dass jeder die Datei messages.properties aus dem Klassenpfad zu verwenden scheint?

Aber wie wäre es mit reinem Hibernate 3, gibt es irgendeine Datei wie das oder was soll ich stattdessen tun? (Habe keine guten Antworten online gefunden ...)

Antwort

1

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 

. enter image description here

+0

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. –

+0

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 –

+0

Entschuldigung, ich verstehe Ihre Frage nicht. Ich dachte, du hättest nach einer Implementierung im Frühling gefragt. –