0

В настоящее время я использую hibernate-distribution-3.6.4.Final. Новое для валидатора Hibernate.Hibernate Validator извлекает сообщения об ошибках без использования Spring Framework

Проблема: Как получить сообщения об ошибках, которые я получил от добавления аннотаций к databean/formbean? Я знаю весной, что все, кажется, используют файл messages.properties из classpath?

Но как насчет чистого hibernate 3, есть ли какой-нибудь файл, или что я должен делать вместо этого? (Не нашел хороших ответов онлайн ...)

ответ

1

Надеюсь, это поможет. Источник: Mastering Spring MVC

Вам нужно будет добавить еще несколько вещей для проверки работоспособности. Во-первых, диспетчеру нужно сказать, что он хочет иметь действительную модель при подаче формы. Добавление javax.validation.Valid как вэй, как

import org.hibernate.validator.constraints.Email; 
    import org.hibernate.validator.constraints.NotEmpty; 

аннотацию к параметру, представляющему форме делает только что:

@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"; 
} 

Обратите внимание, что вы не перенаправить пользователь, если форма содержит какую-либо ошибку. Это позволит вам отображать их на одной и той же веб-странице. Говоря об этом, вам нужно добавить место на веб-странице, где будут отображаться эти ошибки. Добавьте эти строки в 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> 

Да Действительно, Spring Загрузочный заботится о создании исходного сообщения боба для нас. расположение по умолчанию для данного источника сообщений в

src/main/resources/messages. 
properties. 

Создать такую ​​связку, и добавьте следующий текст:

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

Большое спасибо! Как мы можем создать «связку», которую вы упомянули для чистого спящего режима? На самом деле это то, что меня больше всего смутило. –

+0

Извините, это не чистый спящий режим. Эти аннотации взяты из спецификации JSR-303, которая указывает проверку компонентов. Наиболее популярной версией этой спецификации является hibernate-validator, которая включена в Spring Boot. Для чистого Hibernate вы должны искать документацию –

+0

Извините, я не понял ваш вопрос. Я думал, что вы попросили провести весеннее мероприятие. –

Смежные вопросы