Iは、各フォームのPOSTによって呼び出さコントローラ方式が実質的に同一であるスプリングMVC調査アプリケーションを持っていますオブジェクトは途中の各停止地点で検証されます。これは、@Validated()アノテーションに渡されるマーカーインタフェースによって指定されます。スプリングMVC @Validation
public interface SurveyGroupOne {}
public interface SurveyGroupTwo {}
...
、それらがSurveyCommandオブジェクト内のオブジェクトのプロパティに適用されています:
public class Person {
@NotBlank(groups = {
SurveyGroupTwo.class,
SurveyGroupThree.class})
private String firstName;
@NotBlank(groups = {
SurveyGroupTwo.class,
SurveyGroupThree.class})
private String lastName;
...
}
私の質問:どのようにすることができますマーカーインタフェース(SurveyGroupOne、SurveyGroupTwo、など)だけで、マーカーでありますメソッドをジェネリックにして、処理中のページに固有のマーカーインターフェイスを使用しますか?このような何か:
@PostMapping("/{pageNum}")
public String processGroupOne (
Model model,
@PathVariable("pageNum") int pageNum,
@ModelAttribute(GlobalControllerAdvice.SESSION_ATTRIBUTE_NAME)
@Validated(__what goes here??__) SurveyCommand surveyCommand,
BindingResult result) {
if (result.hasErrors()) {
LOG.debug(result.getAllErrors().toString());
model.addAttribute("pageNum", pageNum);
return "survey/page".concat(Integer.toString(pageNum));
}
pageNum++;
model.addAttribute("pageNum", pageNum);
return "redirect:/survey/".concat(Integer.toString(pageNum));
}
がどのように私はもっぱらPAGENUM @PathVariable(または他のパラメータ)に基づいて@Validatedに適切なマーカーインターフェイスを渡すことができますか?