如何在我的控制器中注入HttpServletRequest属性(在拦截器中设置)?

时间:2017-07-14 06:00:05

标签: spring rest spring-mvc spring-boot

我想在我的所有请求到达控制器之前添加一个属性。

我在用什么:

@Component
public class SessionValidatorInterceptor implements HandlerInterceptor {

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
        throws Exception {
    .... some code ....
    request.setAttribute("validRequest","true");
    .... more code ...
    return true;
}

现在我要在我的休息控制器中获取此属性:

public ResponseEntity<?> someMethod(HttpServletRequest request){
    request.getAttribute("validSession");
    ...

我的问题是,我可以像@RequestParam(&#34; validSession&#34;)或@PathVariable或其他更优雅的方式做到这一点? 春天能为我做这件事吗?

感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

在Spring 4.3中,为此添加了@RequestAttribute注释。

public void yourMethod(@RequestAttribute("validRequest") boolean valid)

这样的事情应该可以解决问题。

如果您使用的是早期版本的Spring,则可以实现自己的HandlerMethodArgumentResolver来执行相同操作。

答案 1 :(得分:1)

只需使用@RequestAttribute 像这样

public ResponseEntity<?> someMethod(HttpServletRequest request,
@RequestAttribute("validSession") String xyz){
}

因为,牛仔先生没有回答,我想为什么不是我。 ^ _ ^