我有一个包含十个字段的表单,但一个页面最初只显示五个字段。其余字段被隐藏,并根据绑定到其他字段的 onChange 事件侦听器显示。
在某些情况下,可以提交只有五个非空白字段的表单。在这种情况下,必须仅对这五个进行验证。有时,必须对所有字段执行验证(基于具有 onChange 回调的其他字段的状态)。有没有办法使用注释过滤字段验证,或者我应该编写自定义验证器?
现在所有十个表单字段都已验证。规则如下:
- a,b,c,d,e 是必填字段
- f,g,h 仅在 a="111" 时显示
- i,j 仅在 c="222" 时显示
示例代码:
@NotBlank
private String a;
@NotBlank
private String b;
@NotBlank
private String c;
@NotBlank
private String d;
@NotBlank
private String e;
@NotBlank(a="111")
private String f;
@NotBlank(a="111")
private String g;
@NotBlank(a="111")
private String h;
@NotBlank(c="222")
private String i;
@NotBlank(c="222")
private String j;
控制器代码:
@RequestMapping(value="/payments/getTax.do", method=RequestMethod.POST)
public String getTaxInfo(@Valid OneTimeForm command, BindingResult result,
Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
OneTimeForm oneTimeForm = (OneTimeForm) command;
try {
validator.validate(oneTimeForm, result);
} catch (ValidationException ex) {
throw ex;
}
...///