10 個のフィールドを持つフォームがありますが、最初はページに 5 つのフィールドしか表示されません。残りのフィールドは非表示になり、他のフィールドにバインドされた onChange イベント リスナーに基づいて表示されます。
空白ではないフィールドが 5 つだけあるフォームを送信できるシナリオがあります。その場合、検証はそれらの 5 つに対してのみ実行する必要があります。場合によっては、すべてのフィールドに対して検証を実行する必要があります (onChange コールバックを使用した他のフィールドの状態に基づいて)。注釈を使用してフィールド検証をフィルタリングする方法はありますか、それともカスタム バリデータを作成する必要がありますか?
現在、10 個のフォーム フィールドすべてが検証されています。ルールは次のとおりです。
- 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;
}
...///