別のフォームオブジェクトに含まれているフォームオブジェクトを検証したい。私はこのようなものを持っています:
@Controller
public class FormController {
@RequestMapping(method = RequestMethod.POST)
public void process(@ModelAttribute("form") @Valid FormObject formObject,
BindingResult result) {
...
@InitBinder("form")
protected void initBinder(WebDataBinder binder) {
binder.setValidator(customFormValidator);
}
}
public class FormObject {
@Valid
private FormObject2 formObject2;
}
// This is the class that needs to be validated.
public class FormObject2 {
@NotEmpty
private String name;
}
}
私が抱えている問題は、オブジェクトformObject2を別のカスタムバリデーター(「customFormValidator2」など)で検証したいのですが、登録方法が見つかりません。このようにすると、スプリングバリデーターが2番目のフォームを検証します。
customFormValidator内で2番目のフォームを検証しようとしましたが、2番目のフォームのエラーのパスが最初のフォームに相対的ではなく、jspページにエラーを表示できません。
他のフォーム内に2番目のフォームが必要になる可能性があるため、フォームオブジェクトをこのように構造化しました。これを行うことで、フォームオブジェクトをよりモジュール化できます。
私がやろうとしていることは可能ですか?より良い提案がありますか?