1

我有一个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?

4

0 回答 0