1

我正在使用 JSF 2.0 构建网站。Eclipse 生成了以下 web.xml 文件

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

所以要查看我的应用程序,我必须访问“localhost/myApp/ faces / index.xhtml”。我宁愿通过访问“localhost/myApp/index.xhtml”直接查看它

我看到了两种选择:

将 web.xml 更改为以下内容

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

或者在我的基本目录中设置一个 index.xhtml,它直接对 faces/index.xhtml 执行 javascript/meta。

你认为哪个更好 ?还是有另一种方法可以做到这一点?

4

1 回答 1

1

不要FacesServlet所有请求上映射。您不想让静态(非 JSF)请求经历整个 JSF 生命周期。它只会增加不必要的开销。而是在FacesServlet上映射url-pattern*.xhtml

如果你还有其他xhtml文件不需要经过 JSF 工厂,那就选择不同的url-pattern,比如常用的*.jsf. 您不需要重命名实际的文件扩展名,它FacesServlet会自动找到正确的资源。

绝对不要对主页使用 JS/元重定向。只需将其声明<welcome-file>web.xml.


也就是说,当拥有最新版本并正确配置时,Eclipse 应该默认自动生成web.xml映射FacesServlet在 of 上url-pattern*.jsf. 确保您使用的是最新版本 (Helios) 并在 Eclipse 中正确执行所有操作(配置项目方面)。

于 2010-08-11T11:59:54.913 回答