12

我将 JBoss 7.1 与 JSF 2.1/Prime Faces 一起使用,并不断遇到标题中列出的错误。我已经尝试了这里提出的许多建议,但都以同样的错误告终。

文件结构为:

WEB-INF
   faces
      login.xhtml

我在 web.xml 中有以下内容:

<display-name>clientAccountManager</display-name>
<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>/faces/*</url-pattern>
</servlet-mapping>
<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
    <param-value>true</param-value>
</context-param>

我正在使用以下 URL 访问当前文件:

http://localhost:8080/clientAccountManager/faces/login.xhtml

我还将 URL 模式更改为 *.xhtml 并使用:

http://localhost:8080/clientAccountManager/login.xhtml

结果相同。

我错过了什么?

4

1 回答 1

45

你犯了2个错误。

  1. /WEB-INF文件夹用于存放配置文件、包含文件、模板文件、标签文件等,这些文件应该是隐藏的,不能直接访问,而不是公开访问的文件。将可公开访问的文件放在/WEB-INF文件夹之外。

  2. /faces根本不应该使用文件夹。虚拟/faces/*URL 模式FacesServlet并不意味着您应该拥有这样的物理文件夹。去掉它。

所以,总而言之,只是

WebContent
 |-- META-INF
 |-- WEB-INF
 |    |-- faces-config.xml
 |    `-- web.xml
 `-- login.xhtml

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

http://localhost:8080/clientAccountManager/login.xhtml

应该做。

也可以看看:

于 2012-10-31T01:32:40.460 回答