@WebListener 中的 FacesContext
FacesContext in a @WebListener
我需要在 @WebListener
.
中构建一些 jsf urls
我想我可以使用像这样的代码片段
final FacesContext currentInstance = FacesContext.getCurrentInstance();
final String actionURL = currentInstance.getApplication().getViewHandler()
.getActionURL(currentInstance, viewId);
因为 .getCurrentInstance()
的 javadoc 断言它可以“[...] 在应用程序初始化或关闭期间调用”但它不起作用,因为它 returns null。
我错过了什么吗?在给定 viewId 的情况下,还有其他方法可以构建 url 吗?
谢谢
FacesContext.getCurrentInstance()
方法 执行 return linstener 之间的有效 facesContext
实例(com.sun.faces.config.ConfigureListener
在我的例子中)初始化以及FacesServlet的第一个运行,其中监听器设置的facesContext
被释放。
我的问题是我让 Wildfly 添加了监听器,它是在我添加之后添加的。强制加载 web-fragment.xml
/web.xml
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<listener>
<listener-class>com.company.project.somepackages.Listener</listener-class>
</listener>
让我的侦听器初始化上下文。
上面的代码 但是 没有工作,因为 viewHandler 在尝试解析 contextPath 时使用 externalContext.getRequestContextPath()
方法,显然 returns null
,而不是可以 return 正确值的 externalContext.getApplicationContextPath()
。
我需要在 @WebListener
.
我想我可以使用像这样的代码片段
final FacesContext currentInstance = FacesContext.getCurrentInstance();
final String actionURL = currentInstance.getApplication().getViewHandler()
.getActionURL(currentInstance, viewId);
因为 .getCurrentInstance()
的 javadoc 断言它可以“[...] 在应用程序初始化或关闭期间调用”但它不起作用,因为它 returns null。
我错过了什么吗?在给定 viewId 的情况下,还有其他方法可以构建 url 吗?
谢谢
FacesContext.getCurrentInstance()
方法 执行 return linstener 之间的有效 facesContext
实例(com.sun.faces.config.ConfigureListener
在我的例子中)初始化以及FacesServlet的第一个运行,其中监听器设置的facesContext
被释放。
我的问题是我让 Wildfly 添加了监听器,它是在我添加之后添加的。强制加载 web-fragment.xml
/web.xml
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<listener>
<listener-class>com.company.project.somepackages.Listener</listener-class>
</listener>
让我的侦听器初始化上下文。
上面的代码 但是 没有工作,因为 viewHandler 在尝试解析 contextPath 时使用 externalContext.getRequestContextPath()
方法,显然 returns null
,而不是可以 return 正确值的 externalContext.getApplicationContextPath()
。