【问题标题】:Get controller parameters in interceptor在拦截器中获取控制器参数
【发布时间】:2018-03-03 07:24:27
【问题描述】:

我正在创建一个验证库,我想在控制器之前验证请求。如果我能在拦截器中获取我想要验证的控制器参数,那就太好了。

目前我可以获得有关控制器参数的所有信息,但我找不到获取参数内部实例的方法。 这是我目前拥有的:

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

有没有一种简单的方法可以从拦截器中访问控制器参数?

【问题讨论】:

    标签: java spring interceptor request-validation


    【解决方案1】:

    不确定你是否还在寻找答案,但我认为你可以使用getPart() 或getParts() 方法来解决。 所以在上述情况下,你可以这样做

    Collection<javax.servlet.http.Part> parts = request.getParts();
        Iterator<javax.servlet.http.Part> it = parts.iterator();
        while(it.hasNext()){
            javax.servlet.http.Part p = it.next();
            if(p.getSubmittedFileName() != null)
                fileName = p.getSubmittedFileName();
        }
    

    以上只是一个示例,我尝试获取我作为MultiPartFile 对象上传的文件的名称。在请求选项中查看您想要获取的参数值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多