我已经使用Eclipse Indigo和Tomcat 7.0.32创建了一个JSF 2.0应用程序,如Eclipse Documentation所示。
在这个应用程序中,我有两页:
从login.xhtml
我导航到welcome.xhtml
。
我已将login.xhtml
声明为web.xml
中的欢迎页面。
<welcome-file-list>
<welcome-file>login.xhtml</welcome-file>
</welcome-file-list>
并将url-pattern
的{{1}}定义为:
Faces Servlet
现在我有两个问题:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
时,我可以看到登录页面,但在登录后,当我导航到welcome.xhtml时,网址将更改为http://localhost:8080/LibraryInformationSystem/
而不是{{1 }};但如果我手动浏览http://localhost:8080/LibraryInformationSystem/login.xhtml
,它也会显示相同的内容。我的问题是网址没有改变的原因?这是定义默认页面的正确方法吗?我从其他两个SO线程中找到了信息,第一个是here,第二个是here。任何指针对我都非常有用。
答案 0 :(得分:1)
关于第1点),JSF打破了HTTP语义。它应该使用GET来提供http://localhost:8080/LibraryInformationSystem/welcome.xhtml
的内容,但JSF使用POST,因此URL不会更改。您可以执行Post-Redirect-Get
更新URL,但默认情况下不是JSF的工作方式。
关于第2点,你应该避免在同一个SO问题中提出两个问题。