我有一个ServletContextListener
并且我正在容器JSF 2.3
上运行一个应用程序。Tomcat 9
一切都很好,但是我需要访问FacesContext
创建上下文的时间。
由于我没有使用部署描述符,所以我没有注册FacesServlet
配置,看起来它是由容器自动注册的,原因如下:
以下调用将返回NULL
,如 Java Doc 中所述,它NULL
在已经创建同名的 Servlet 时返回。
sce.getServletContext().addServlet("FacesServlet", FacesServlet.class)
以下调用确实返回一个值:
ServletRegistration facesServlet = sce.getServletContext().getServletRegistration("FacesServlet");
但是由于我没有做任何配置,所以我没有设置loadOnStatup
参数,所以它被自动设置为-1
.
现在是一个负数,这意味着这个 Servlet 是惰性的,所以通过调用FacesContext.getCurrentInstance()
我正在接收NULL
,因为似乎 Servlet 还没有初始化。
现在,当然,我可以通过部署描述符手动注册 Servlet,但我想避免这种情况(只是因为我想尽可能多地从自动配置中受益)。
我没有找到以loadOnStatup
编程方式更改值的方法,有没有办法初始化这个 Servlet?