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

use*_*041 4 navigation jsf view

我在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>
Run Code Online (Sandbox Code Playgroud)

在我浏览器的地址栏中,该页面显示为:

http://localhost:8080/ui/faces/pages/index.xhtml
Run Code Online (Sandbox Code Playgroud)

一旦身份验证发生,该函数返回此字符串:

"/ui/faces/pages/home.xhtml"
Run Code Online (Sandbox Code Playgroud)

我要导航到的文件位于:

pages/home.xhtml
Run Code Online (Sandbox Code Playgroud)

但是当导航应该发生时,我收到此错误:

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

任何人都可以帮助我理解正确导航到页面所需的相对路径吗?

Bal*_*usC 5

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

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

/pages/home.xhtml

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

home.xhtml

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

甚至没有文件扩展名; JSF将暗示的Facelets默认后缀默认为.xhtml和是configureablejavax.faces.DEFAULT_SUFFIX上下文参数:

/pages/home

home

如果你认识到上下文路径它使毕竟也感觉到/uiFacesServlet映射/faces/*不是从web应用程序内部控制的!如果他们从外部改变,那么理论上你需要改变整个代码库中的所有导航案例结果并重建webapp.这没有任何意义.因此,JSF已经为您照顾它们.

也可以看看:


归档时间:

查看次数:

2306 次

最近记录:

9 年,5 月 前