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'
任何人都可以帮助我理解正确导航到页面所需的相对路径吗?
您不应在导航案例结果中包含上下文路径/ui
和FacesServlet
映射/faces
.它应该只代表唯一的视图ID,它基本上只是物理视图文件到webcontent根目录或相对于当前视图ID的绝对路径.
所以,/
对webcontent root 绝对(以#开头):
/pages/home.xhtml
或相对(不是以/
)开头的当前视图ID(假设您在/pages/index.xhtml
):
home.xhtml
请注意,不支持点斜杠./
和双点斜杠../
表示法.
甚至没有文件扩展名; JSF将暗示的Facelets默认后缀默认为.xhtml
和是configureable由javax.faces.DEFAULT_SUFFIX
上下文参数:
/pages/home
home
如果你认识到上下文路径它使毕竟也感觉到/ui
和FacesServlet
映射/faces/*
是不是从web应用程序内部控制的!如果他们从外部改变,那么理论上你需要改变整个代码库中的所有导航案例结果并重建webapp.这没有任何意义.因此,JSF已经为您照顾它们.
归档时间: |
|
查看次数: |
2306 次 |
最近记录: |