在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
}
}