使用 ThreadLocal 在项目中 出现报错
具体问题可以查看我提问题的链接https://bbs.csdn.net/topics/392383155
这里贴上我的解决方法
package com.gem.struts.core; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.Map; public class ActionContext { private ThreadLocal<Map<String, Object>> threadLocal = ThreadLocal.withInitial(() -> new HashMap<>()); private static ActionContext context = new ActionContext(); public static ActionContext getContext() { return context; } public void setRequest(HttpServletRequest request) { threadLocal.get().put("request", request); } public void setResponse(HttpServletResponse response) { threadLocal.get().put("response", response); } public HttpServletRequest getRequest() { return (HttpServletRequest) threadLocal.get().get("request"); } public HttpServletResponse getResponse() { return (HttpServletResponse) threadLocal.get().get("response"); } }
很感谢 我那帖子的回答者,他最后那段代码,提到了线程Tomcat问题,于是乎在百度搜索相关内容,链接https://www.cnblogs.com/dolphin0520/p/3920407.html
这里重启Tomcat运行成功,我的编辑器提示我划线的部分可以用其他代码代替
根据它的提示我又在百度上搜了关于 ThreadLocal.withInitial()
链接https://www.cnblogs.com/protected/p/7395717.html 最后看到的就是我贴上去的代码了,貌似这种写法是在8之后有的。总之问题解决了,起码项目每个功能都能跑起来,如果有更好的解决方法和思路,可以互相交流……