小编Jav*_*piX的帖子

Spring 3 HandlerInterceptor 将信息传递给控制器

我已经设置了一个 Spring HandlerInterceptor 来向 HttpServletRequest 添加一个属性,以便能够从控制器读取它,遗憾的是这似乎不起作用,这对我来说似乎很奇怪。我做错了吗?知道如何将数据从拦截器传输到控制器吗?

这是两个受影响的类的简化代码

public class RequestInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        request.setAttribute("my-role", "superman");
    }
   [...]
}

@RestController
@RequestMapping("Test")
public class TestController {
    public final Logger logger = LoggerFactory.getLogger(getClass());

    @RequestMapping(value = "something")
    public void something(HttpServletRequest request) {
        logger.info(request.getAttribute("my-role"));
    }

    [...]
}
Run Code Online (Sandbox Code Playgroud)

request.getAttribute("my-role") 返回空值...但如果我在 HandlerInterceptor 的 postHandle 中读取它确实返回异常值,我觉得我错过了一些东西...

编辑:我发现通过“request.getSession().setAttribute”进行会话很有用,但我仍然不明白为什么请求本身在这个用例中不起作用。

java spring

5
推荐指数
1
解决办法
3712
查看次数

标签 统计

java ×1

spring ×1