3

検証ライブラリを作成しており、コントローラーの前にリクエストを検証したいと考えています。インターセプターで検証したいコントローラーパラメーターを取得できると本当にいいですね。

現時点では、コントローラーのパラメーターに関するすべての情報を取得できますが、パラメーター内にあるインスタンスを取得する方法が見つかりません。これは私が現時点で持っているものです:

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;
}

インターセプターからコントローラーのパラメーターにアクセスする簡単な方法はありますか?

4

1 に答える 1