我正在尝试开始使用 JSF 2.0。我正在尝试一个基本的导航示例,但它无法正常工作。
文件结构如下:
我已经在 web.xml 中配置了映射:
<!-- Change to "Production" when you are ready to deploy -->
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<!-- Welcome page -->
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<!-- JSF mapping -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
并且索引页面有 2 个按钮,点击后可将您带到不同的页面
faces-config.xml 文件定义了一些导航案例:
<!-- Configuration of navigation rules -->
<navigation-rule>
<from-view-id>/index.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/pages/success.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>error</from-outcome>
<to-view-id>/pages/error.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
例如,以下按钮应将您带到成功页面(/pages/success.xhtml):
<p:commandButton id="addUser" value="Add" action="#{userMB.addUser}" ajax="false"/>
我已经对此进行了调试,addUser 的返回值绝对是“成功”。
页面切换到success.xhtml,因为我看到内容变了,但是浏览器URL指向index.xhtml....
启动时: URL 是localhost:8080/PROJECT/没有 index.xhtml 可能是因为我们将其配置为欢迎文件。当我们点击上面的按钮时,URL 变为localhost:8080/PROJECT/index.xhtml
我相信我弄乱了映射或相对路径。我发现了一些建议,唯一的映射应该是带有 *.xhtml 的映射,但我并不真正理解为什么以及如何处理页面的多个子文件夹。
任何帮助表示赞赏,谢谢