第一次调用时,Servlet中的会话属性为空

时间:2018-06-08 05:28:14

标签: servlets jsf-2.2 servlet-3.0

在jsf-project中,我有一个newsfeed.xhtml页面,它与一个本身可以访问会话属性的servlet相关联。首次调用该页面时,session属性为null。当我进行刷新或第二次获取时,会话属性可用。

现在,当我尝试手动创建会话对象时,如果它是null或使用@Inject注释,我会收到一个错误,因为该对象使用了FacesContext的一些在servlet中不可用的方法。

处理这种情况的最佳方法是什么?在这种情况下,将HttpServletRequest传递给LanguageController并从那里获取适当的数据?

@WebServlet("/newsfeed")
public class NewsFeedServlet extends HttpServlet {

  //@Inject
  //private LanguageController lgController;

  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    final LanguageController cl = request.getSession().getAttribute("languageController"); 
    //is null for first access
  }
}

LanguageController:

@SessionScoped
public class LanguageController implements Serializable {

  private Locale locale;

  @PostConstruct
  public void init(){
      locale = Faces.getLocale(); //omnifaces FacesContext-wrapper
      //problem, FacesContext is null
  }
}

0 个答案:

没有答案