java - 获取自定义 Spring 作用域中的当前请求

标签 java spring jsf servlets request

我基于 FacesContext Logique 编写了一个自定义 spring 作用域,

public class DynamicScope implements Scope{
    @Override
    public Object get(String name, ObjectFactory<?> objectFactory) {
        AbsErpFolder erpFolder = null;
        if (FacesContext.getCurrentInstance()!=null)            
            erpFolder = (AbsErpFolder)FacesUtils.getExternalContext().
getRequestMap().get( ErpFolderKey );
    ............
}  

现在我需要使用 FileServlet Filter 实例化一个 bean

WebApplicationContext wsc = WebApplicationContextUtils.getWebApplicationContext(config.getServletContext());
IGenericService erpFileService = (IGenericService) wsc.getBean("erpFileService");

问题是在执行我的ServletFile期间,当前的FacesContext为null(动态作用域无法工作),那么如何获取当前请求?

最佳答案

ThreadLocal 应该可以解决问题 (在我的第一个过滤器中定义)

public static ThreadLocal servletRequestHolder  = new ThreadLocal();
public static HttpServletRequest getCurrentRequest(){
    return (HttpServletRequest) servletRequestHolder.get();
}
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
            throws ServletException, IOException {
   servletRequestHolder.set( request );
...........
}

关于java - 获取自定义 Spring 作用域中的当前请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22768063/

相关文章:

java - 如何将 spring-data-rest 与 spring websocket 混合到一个实现中

java - 如何从 Servlet 访问托管 bean 和 session bean

java - JSF - 如何将许多值插入到数据库表中

java - 在java反射中找不到方法

java - 是否可以通过编程方式销毁静态变量?

java - 嵌入式模式下的 neo4j + heroku;存储选项?

java - Spring注释表单验证有问题吗?

Java Spring 安全 AccessDecisionManager : UnanimousBased Failed to parse expression 'ROLE_ADMIN, IS_AUTHENTICATED_FULLY'

java - tuckey urlrewrite 不适用于 url 重写中的查询变量

java - PDFBox v2 将 PNG 图像写入 PDF 文件,得到空文件