検証ライブラリを作成しており、コントローラーの前にリクエストを検証したいと考えています。インターセプターで検証したいコントローラーパラメーターを取得できると本当にいいですね。
現時点では、コントローラーのパラメーターに関するすべての情報を取得できますが、パラメーター内にあるインスタンスを取得する方法が見つかりません。これは私が現時点で持っているものです:
public class ValidationInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (handler instanceof HandlerMethod) {
HandlerMethod method = (HandlerMethod) handler;
for (MethodParameter param: method.getMethodParameters()) {
// Check if the parameter has the right annotations.
if (param.hasParameterAnnotation(RequestBody.class) && param.hasParameterAnnotation(Valid.class)) {
// Here I wan't to get the object that is in the parameter so I can validate it.
}
}
}
return true;
}
}
コントローラーメソッドの例:
@RequestMapping(value = "register", method = RequestMethod.POST)
public Response register(@Valid @RequestBody RegisterRequest request) {
// return response and stuff.
}
登録リクエスト:
public class RegisterRequest {
@JsonProperty("email")
public String email;
@JsonProperty("name")
public String name;
@JsonProperty("password")
public String password;
@JsonProperty("password_confirmation")
public String passwordConfirmation;
}
インターセプターからコントローラーのパラメーターにアクセスする簡単な方法はありますか?