Я пытаюсь настроить Hibernate Validation на моем сайте электронной коммерции. У меня есть объект заказа с несколькими назначенными объектами. Когда клиент проходит проверку, я хочу иметь возможность индивидуально проверять эти объекты - иногда несколько объектов с одной формой.Пользовательские сообщения об ошибках в Hibernate Validation
Например, при отправке формы доставки необходимо отправить подтверждение доставки и доставки. Если эта проверка не удалась, форма доставки будет возвращена со списком ошибок проверки.
Я могу проверить объекты с помощью реализации java, однако, когда я пытаюсь просмотреть их на уровне представления, используя тег <form:error />
, я ничего не получаю.
заказа Модель
@Entity
@Table(name = "bees_address")
public class Address {
@OneToOne
@JoinColumn(name = "paymentAddress")
private Address payment;
@OneToOne
@JoinColumn(name = "deliveryAddress")
private Address payment;
@Column(name = "deliveryCharge")
private Integer deliveryCharge;
...
Адрес Модель
@Entity
@Table(name = "bees_address")
public class Address {
@Size(min=2, max=150)
@Column(name = "line1", length = 150)
private String line1;
...
Контроллер
public String updateDelivery(HttpServletRequest request, @ModelAttribute("basket") Order basketUpdate) {
Address deliveryAddress = basketUpdate.getDeliveryAddress();
if (!Validate.isValid(request, deliveryAddress)) {
logger.info("Delivery address does not validate");
return "redirect:/checkout/delivery";
} else {
/* do stuff here */
}
return "redirect:/checkout/payment";
}
Validation Hibernate Validation Docs
public static Boolean isValid(HttpServletRequest request, Address address) {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<Address>> constraintViolations = validator.validate(address);
request.getSession().setAttribute("formErrors", constraintViolations);
return constraintViolations.size() < 1;
}
JSP Структура
<form:form action="${url}" method="post" modelAttribute="basket"
Charge: <form:input path="deliveryCharge" />
Address: <form:input path="deliveryAddress.line1" />
<form:error path="deliveryAddress.line1" />
...
Большое спасибо
Не могли бы вы переформулировать свой вопрос? Трудно сказать, что вы сейчас спрашиваете? – Hardy