我有麻烦我的JSF页面之间进行导航。 当您单击命令按钮我的大部分导航的发生。 命令按钮的动作返回一个字符串。
我的登录页面是我的欢迎页面。 这是我的web.xml:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>faces/pages/index.xhtml</welcome-file>
</welcome-file-list>
在我的浏览器的地址栏,页面显示为:
http://localhost:8080/ui/faces/pages/index.xhtml
一旦认证情况,该函数返回字符串:
"/ui/faces/pages/home.xhtml"
我想浏览到位于文件:
pages/home.xhtml
然而,当导航是应该发生的,我得到这个错误:
无法找到具有匹配导航情况下,从视点-ID“/pages/index.xhtml”的动作“#{indexPageController.login()}”与结果“/ui/faces/pages/home.xhtml”
任何人都可以帮助我了解的相对路径我需要正确浏览网页?
你不应该包括上下文路径/ui
也没有FacesServlet
映射/faces
在导航的情况下的结果。 它应该只是代表鞋底视图ID,它是基本上只是路径绝对到WebContent根或相对于当前视图ID的物理视图文件。
所以,绝对(开始/
)到WebContent根:
/pages/home.xhtml
或相对(未开始/
),以当前视图ID(假设你是/pages/index.xhtml
):
home.xhtml
请注意,点斜线./
和二点斜线../
不支持符号。
或者即使没有文件扩展名; JSF将暗示的Facelets默认后缀默认为其中.xhtml
和是configureable通过javax.faces.DEFAULT_SUFFIX
上下文参数:
/pages/home
home
如果你认识到上下文路径它使毕竟也感觉到/ui
和FacesServlet
映射/faces/*
不从webapp的内部控制的! 如果他们改变外部,那么你在理论上需要将所有的导航结果的情况下,在整个代码库和重建web应用程序。 这没有任何意义。 JSF需要这样已经为你照顾他们。
也可以看看:
- 如何在JSF导航? 如何使URL反映当前页面(而不是以前的一个)
- 按钮和h::H之间的区别的commandButton
- 什么时候应该使用高:outputLink的,而不是H:commandLink?
- 什么URL中使用链接/导航到其他JSF页面
文章来源: Unable to find matching navigation case with from-view-id '/pages/index.xhtml'