2

我需要将漂亮的面孔与我的 jsf 2.0,primefaces 应用程序集成,但这会带来一些麻烦。

如入门中所述,我将以下内容放在我的 web.xml 中,在 lib 文件夹中添加了所需的 jar

<filter>
  <filter-name>Pretty Filter</filter-name>
  <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
  <async-supported>true</async-supported>
 </filter>

 <filter-mapping>
    <filter-name>Pretty Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
 </filter-mapping>

我的 web.xml 中的其他项目

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <context-param>
        <param-name>com.sun.faces.expressionFactory</param-name>
        <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
  </context-param>
  <context-param>
        <param-name>org.primefaces.extensions.DELIVER_UNCOMPRESSED_RESOURCES</param-name>
        <param-value>false</param-value>
  </context-param>

但我收到以下错误:

Invalid content was found starting with element 'async-supported'. One of '{"http://java.sun.com/xml/ns/javaee":init-param}' is expected

如果我 <async-supported>从项目构建中删除,项目编译但映射不起作用。

pretty-config.xml与入门相同。

我是否需要在我的 web.xml 中提及映射文件的名称/路径,即 pretty-config.xml?

编辑:

我正在使用 Glassfish 服务器 3。

4

1 回答 1

5

检查version您在web.xml. 如果已version="2.5"设置,则必须将其添加到 web.xml:

<filter>
  <filter-name>Pretty Filter</filter-name>
  <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
</filter>
<filter-mapping> 
  <filter-name>Pretty Filter</filter-name> 
  <url-pattern>/*</url-pattern> 
  <dispatcher>FORWARD</dispatcher> 
  <dispatcher>REQUEST</dispatcher> 
  <dispatcher>ERROR</dispatcher>
</filter-mapping>

请注意<async-supported>true</async-supported>这里没有设置,因为它仅在 Servlet 3.0 中受支持。

如果您已version="3.0"在 web.xml 中设置,则无需向 web.xml 添加任何内容。在这种情况下,PrettyFaces 使用web-fragment.xml包含在prettyfaces-jsf2.jar.

您不必指定pretty-config.xml任何地方的位置。只需将它放在您的WEB-INF文件夹中,PrettyFaces 就会找到它。

您还应该向您的 . 中添加一个映射pretty-config.xml,以便检查一切是否正常。例如,如果您有一个通常使用以下 URL 访问的页面:

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

然后你可以添加这个映射:

<url-mapping id="login">
  <pattern value="/login" />
  <view-id value="/faces/login.xhtml" />
</url-mapping>

现在您应该可以使用此链接访问该页面:

http://localhost:8080/myapp/login
于 2012-10-15T11:58:40.363 回答