Надеюсь, это поможет. Источник: 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
.
Большое спасибо! Как мы можем создать «связку», которую вы упомянули для чистого спящего режима? На самом деле это то, что меня больше всего смутило. –
Извините, это не чистый спящий режим. Эти аннотации взяты из спецификации JSR-303, которая указывает проверку компонентов. Наиболее популярной версией этой спецификации является hibernate-validator, которая включена в Spring Boot. Для чистого Hibernate вы должны искать документацию –
Извините, я не понял ваш вопрос. Я думал, что вы попросили провести весеннее мероприятие. –