无法找到与from-view-id'/pages/index.xhtml'匹配的导航案例

时间:2012-12-19 23:52:28

标签: jsf view navigation

我在浏览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

然而,当导航发生时,我会收到此错误:

  

无法找到与from-view-id'/pages/index.xhtml'匹配的导航案例,以获取行动'#{indexPageController.login()}'与结果'/ui/faces/pages/home.xhtml'< / p>

有谁能帮我理解正确导航到页面所需的相对路径?

1 个答案:

答案 0 :(得分:5)

您不应在导航案例结果中包含上下文路径/uiFacesServlet映射/faces。它应该只代表唯一的视图ID,它基本上只是物理视图文件到webcontent根目录或相对于当前视图ID的绝对路径。

所以,绝对(以/开头)到webcontent root:

/pages/home.xhtml

或相对(不是以/开头)到当前视图ID(假设您在/pages/index.xhtml中):

home.xhtml

请注意,不支持点斜杠./和双点斜杠../表示法。

甚至没有文件扩展名; JSF将暗示Facelets默认后缀默认为.xhtmljavax.faces.DEFAULT_SUFFIX/ui上下文参数:

/pages/home

home

如果您意识到上传路径FacesServlet/faces/*映射{{1}} 可以从webapp内部控制,这毕竟也是有意义的!如果他们从外部改变,那么理论上你需要改变整个代码库中的所有导航案例结果并重建webapp。这没有任何意义。因此,JSF已经为您照顾它们。

另见: