我正在使用JSF为一个项目创建一个网站,并且我使用子目录来管理哪些用户能够访问哪些页面。
我的WAR项目组织如下:
+Web Pages
+User
movies.xhtml
+WEB-INF
//beans, faces-config, glassfish-web, and web.xml here
+images
+resources
+css
header.css
+templates
header.xhtml
index.xhtml
//other views
我的导航规则如下
<navigation-rule>
<from-view-id>/login.xhtml</from-view-id>
<navigation-case>
<from-outcome>movies</from-outcome>
<to-view-id>/User/movies.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-view-id>*</from-view-id>
<from-outcome>index</from-outcome>
<to-view-id>/index.xhtml</to-view-id>
<from-outcome>create</from-outcome>
<to-view-id>/create.xhtml</to-view-id>
<from-outcome>help</from-outcome>
<to-view-id>/help.xhtml</to-view-id>
<from-outcome>login</from-outcome>
<to-view-id>/login.xhtml</to-view-id>
<from-outcome>search</from-outcome>
<to-view-id>/search.xhtml</to-view-id>
</navigation-case>
我的web.xml servlet映射如下:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/vd/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>vd/index.xhtml</welcome-file>
</welcome-file-list>
现在,将我带到/User/movies.xhtml的导航规则没有问题了。但是,一旦我进入/User/movies.xhtml, JSF就找不到我的任何页面了。index.xhtml)。但是,它仍然可以找到movies.xhtml使用的模板。
为什么JSF找不到其他视图在哪里?我应该如何改变我的导航规则,以便它能找到它们?
我正在运行的Glassfish v3.1.2
我知道问题出在哪里了。我不再使用导航用例,而是使用JSF 2的隐式导航,一切正常。