【发布时间】:2016-02-21 09:11:57
【问题描述】:
我需要在 @WebListener 中构建一些 jsf url。
我想我可以使用这样的 sn-p 代码
final FacesContext currentInstance = FacesContext.getCurrentInstance();
final String actionURL = currentInstance.getApplication().getViewHandler()
.getActionURL(currentInstance, viewId);
因为.getCurrentInstance() 的 javadoc 断言它可以“[...] 在应用程序初始化或关闭期间调用”但它不起作用,因为它返回 null。
我错过了什么吗?给定 viewId 的任何其他方式来构建 url?
谢谢
【问题讨论】:
-
您认为这可能是解决方案的真正问题是什么?
-
这就是我需要的。在上下文开始时,我需要以与配置无关的方式为另一个 web 应用程序(完全不知道 jsf,但这不应该是相关的)生成一些 url。我知道我可以做类似
servletContext.getContextPath() + "/file.xthml"的事情,但我希望有更好的方法。 -
为什么是“更好”的方式?你这样做的方式有什么问题?也许再解释一下
-
我不想处理 facelets 扩展和映射,而是让 jsf 来完成这项工作。很简单
-
描述您希望/需要如何以及在何处将此 viewId 呈现给其他 web 应用程序......这就是您真正的“问题”,您似乎“卡在”这个解决方案中。 ... FacesContext 当前实例在达到 FacesServlet 之后可用,而不是之前可用(可以在其他帖子中阅读)。所以这就是为什么它是空的。但是对你来说很直接的东西对我来说完全模糊,但这可能是由于我有限的视野/视野/知识/......也许其他人可以帮助......
标签: jsf-2.2 servletcontextlistener facescontext