gpt4 book ai didi

java - 如何在 JSF2.0 中声明默认的 .xhtml 页面

转载 作者:行者123 更新时间:2023-12-01 15:02:28 25 4
gpt4 key购买 nike

我已经创建了一个 JSF 2.0 应用程序,如 Eclipse Documentation 中所示。使用 Eclipse Indigo 和 Tomcat 7.0.32。

在此应用程序中,我有两个页面:

  1. 登录.xhtml
  2. 欢迎.xhtml

login.xhtml我导航到welcome.xhtml

我已将 login.xhtml 声明为 web.xml 中的欢迎页面。

  <welcome-file-list>
<welcome-file>login.xhtml</welcome-file>
</welcome-file-list>

并且还将 Faces Servleturl-pattern 定义为:

  <servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

现在我遇到两个问题:

  1. 当我访问 URL http://localhost:8080/LibraryInformationSystem/ 时,我可以看到登录页面,但登录后,当我导航到welcome.xhtml 时,URL正在更改为 http://localhost:8080/LibraryInformationSystem/login.xhtml 而不是 http://localhost:8080/LibraryInformationSystem/welcome.xhtml;但如果我手动浏览 http://localhost:8080/LibraryInformationSystem/welcome.xhtml,它也会显示相同的内容。我的问题是为什么 URL 没有改变?这是定义默认页面的正确方法吗?我从另外两个 SO 线程中找到了信息,第一个是 here第二个是 here .
  2. 第二个问题是,当我从 Eclipse 运行应用程序并将应用程序启动到其内部浏览器时,我可以看到登录页面,但如果我关闭从 Eclipse 运行的服务器并从批处理运行 Tomcat文件startup.bat(驻留在bin文件夹中)并将应用程序导出为war文件并将其部署到webapps文件夹中,有时我可以看到登录页面,有时我会从Firefox或Chrome看到Tomcat的HTTP错误 - 404页面。如果我关闭startup.bat并从webapps文件夹中删除myapplication.war和myapplication文件夹,然后再次从startup.bat启动服务器并再次从Eclipse导出war我可以看到登录页面,在这种情况下没有404错误。为什么会发生这种情况?

任何指针都会对我非常有帮助。

最佳答案

关于第 1) 点,JSF 破坏了 HTTP 语义。它应该使用 GET 来提供 http://localhost:8080/LibraryInformationSystem/welcome.xhtml 的内容,但 JSF 使用 POST,因此 URL 不会更改。您可以执行 Post-Redirect-Get 来更新 URL,但这不是 JSF 默认的工作方式。

关于第 2 点,您应该避免在同一 SO 问题中提出两个问题。

关于java - 如何在 JSF2.0 中声明默认的 .xhtml 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com