无法找到匹配导航的情况下从-view-id的“/pages/index.xhtml”(Unable

2019-07-17 10:54发布

我有麻烦我的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”

任何人都可以帮助我了解的相对路径我需要正确浏览网页?

Answer 1:

你不应该包括上下文路径/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

如果你认识到上下文路径它使毕竟也感觉到/uiFacesServlet映射/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'