繁体   English   中英

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

[英]How to declare default .xhtml page in JSF2.0

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

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

  1. login.xhtml
  2. welcome.xhtml

login.xhtml我导航到welcome.xhtml

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

  <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线程中找到了信息,第一个在这里 ,第二个在这里
  2. 第二个问题是,当我从Eclipse运行应用程序并将其启动到内部浏览器时,我可以看到登录页面,但是如果我关闭从Eclipse运行的服务器并从批处理文件启动中运行Tomcat。 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问题中提出两个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM