首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Servlet中JSFUtils.resolveExpression("#{sessioncontext}")中的空指针异常

Servlet中JSFUtils.resolveExpression("#{sessioncontext}")中的空指针异常
EN

Stack Overflow用户
提问于 2013-09-29 12:21:06
回答 2查看 1.1K关注 0票数 0

我正在使用Servlets,我试图使用ADF中的JSFUtils.resolveExpression("#{sessioncontext}")方法检索会话上下文,但是它给了我一个Null指针异常。上面使用的方法有什么问题,还有其他方法在我的Servlet中检索会话上下文吗?

谢谢,

编辑:请找到下面的代码,

代码语言:javascript
复制
public class MyServlet extends HttpServlet {


public final void init(final ServletConfig config) throws ServletException {
    super.init(config);
}

public void doGet(HttpServletRequest request,
                HttpServletResponse response)
        throws ServletException, IOException
{
    response.setContentType("text/html");
  PrintWriter out = response.getWriter(); 
 SessionContext session = (SessionContext) JSFUtils.resolveExpression("#{sessioncontext}");
  //more code below

  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-02 15:25:40

我用下面的代码替换了上面的代码,它工作得很好:)我没有acesss到FacesContext,它正在抛出一个空指针

代码语言:javascript
复制
FacesContext facesContext = FacesContext.getCurrentInstance();
    if (facesContext == null) {
        FacesContextFactory contextFactory =
            (FacesContextFactory) FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
        LifecycleFactory lifecycleFactory =
            (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
        Lifecycle lifecycle =
            lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
        facesContext =
                contextFactory.getFacesContext(request.getSession().getServletContext(),
                                               request, response,
                                               lifecycle);
        // Below is an Inner Class which extends FacesContext to use its below protected method
        AbstractInnerFacesContext.setFacesContextAsCurrentInstance(facesContext);
    }

现在,由于我有FacesContext,我可以使用resolveExpression方法使用的相同逻辑轻松地从其中检索SessionContext :) (Yay!!)

票数 -1
EN

Stack Overflow用户

发布于 2013-09-29 13:52:18

如果不遵循FacesContext映射URL,您的servlet就无法访问FacesContext。

例如,在任何oracle应用程序中,默认的JSF映射都是/ Faces /*,因此如果将Servlet放置为相同的映射,Faces上下文将不会为null。

例如,让Servlet映射类似于下面的/faces/myCoolServlet,它会正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19077990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档