Validation hibernate验证-验证两个路径之一
我使用SpringMVC和Hibernate验证程序。我有一个订单,你可以选择不同的付款方式。您有一个单选按钮,用于选择付款方式并输入所选付款方式的相关参数 当然,如果有人选择了“直接借记”,我不希望在“贝宝”表单中出现验证错误。当时我是这样做的:Validation hibernate验证-验证两个路径之一,validation,spring-mvc,polymorphism,hibernate-validator,Validation,Spring Mvc,Polymorphism,Hibernate Validator,我使用SpringMVC和Hibernate验证程序。我有一个订单,你可以选择不同的付款方式。您有一个单选按钮,用于选择付款方式并输入所选付款方式的相关参数 当然,如果有人选择了“直接借记”,我不希望在“贝宝”表单中出现验证错误。当时我是这样做的: public class OrderForm { @NotNull private Integer customerId private PaymentMethodDebitForm paymentMethodDebitForm;
public class OrderForm
{
@NotNull
private Integer customerId
private PaymentMethodDebitForm paymentMethodDebitForm;
private PaymentMethodPayPalForm paymentMethodPayPalForm;
private String paymentSelection;
@Valid
public PaymentForm getPaymentForm ( )
{
if (paymentSelection.equals("PayPal"))
{
return paymentMethodPayPalForm;
}
return paymentMethodDebitForm;
}
这样,验证器只获取所选付款方式的形式
我有两个问题
public class PaymentMethodDebitForm extends PaymentForm
{
@NotNull
@Size(min = 3, max = 50, message = "{paymentMethodDebitForm.iban.Size}")
private String iban;
}
<form:input path="paymentMethodDebitForm.iban" size="40" maxlength="50" />
<form:errors path="paymentMethodForm.iban" />
不太好当涉及到spring/hibernate的表单和验证时,如何处理多态性?有什么建议如何处理这种情况吗?我想我会尝试通过
使用验证组,或者我会将表单分开。这里也讨论了这一点-只是想一想:当控制器参数中有@Valid时(例如,public void handleRequest(@RequestBody@Valid FormModel
),是否可以添加“required=false”之类的内容对于@RequestParam
s?以便您只需使用您想要的实际类,但在controllermethod中都有两个可选参数。然后向控制器添加Exceptionhandler,该控制器检查MethodArgumentNotValidException
一般情况下,并通过类似于`response.getWriter()的方式添加响应。append(…getDefaultMessage());`到HttpServletResponse
-我想这就是我要尝试的,这是绝对正确的。我需要GroupConversion才能让它工作: