一、该问题的重现步骤是什么?
1. 前端发送get请求
2. controller层可以拿到AuthUtil.getUser()的用户信息
3.从controller到service层后,再用AuthUtil.getUser()获取用户信息时,结果为空;debug时查看原因,到了service层时request丢失了。
二、你期待的结果是什么?实际看到的又是什么?
processService.historyFlowList方法
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
联合版2.9.0
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
已用下面方法解决:
// 将RequestAttributes对象设置为子线程共享
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(sra, true);
亲。异步没有在request里。所以无法获取到,请使用userId或者user对象作为参数传递就行了
@async异步导致的,但是异步的话,如何拿AuthUtil.getUser()呢?
看看有没有线程共享的方法,因为他的request是从LocalThread里取的。
现在是工作流那块,如果User对象作为参数传递的话,一路传下去方法能有几十个
已用下面方法解决
// 将RequestAttributes对象设置为子线程共享
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(sra, true);
这里真是一个大坑啊我去,研究了大半天
扫一扫访问 Blade技术社区 移动端