В настоящее время я работаю над проверкой HTML-форм с использованием Hibernate и Spring MVC.
Я применил некоторую проверку к Enity и добавил код в свой контроллер.При отправке формы контроллеру с данными в неверном формате отображается страница с ошибкой (500).однако я хочу, чтобы форма была возвращена пользователю с сообщением об ошибке, отображаемым рядом с неправильным полем.
Код объекта:
@NotNull(message="Please enter a product")
@Column(name="product_name")
private String productName;
@NotNull(message="Please enter a product code")
@Pattern(regexp="([A-Z]{2,4})-([0-9]{5})|", message="Incorrect format")
@Column(name="product_code")
private String productCode;
Код контроллера:
@GetMapping("/showFormForAdd")
public String showFormForAdd(Model theModel) {
// create model attribute to bind form data
QaRaised theProduct = new QaRaised();
theModel.addAttribute("product", theProduct);
return "product-form";
}
@PostMapping("/saveProduct")
public String saveProduct(@Valid @ModelAttribute("product") QaRaised theProduct, BindingResult bindingResult) {
qaRaisedService.saveProduct(theProduct);
if (bindingResult.hasErrors()) {
return "product-form";
}
return "redirect:/products/qaraised";
}
Трассировка стека из-за ошибки:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [com.sonya.spring.entity.QaRaised] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[ConstraintViolationImpl{interpolatedMessage='Incorrect format', propertyPath=productCode, rootBeanClass=class com.sonya.spring.entity.QaRaised, messageTemplate='Incorrect format'}
Код формы:
<div class="form-group">
<label for="InputPC">Product Code:</label>
<form:input required="true" type="text" title="Product Code" path="productCode" class="form-control" id="productCodeInput" placeholder="Enter Product Code" commandName="productCode"/>
<form:errors path="productCode"/>
Проверка здесь работает правильно, я просто хочу перенаправить пользователя обратноформа.Кто-нибудь может увидеть что-то, что я пропустил, или указать мне правильное направление?
Приветствия, Дэнни