1

在我的web.xml我有:

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

我有一些页面,存储在我的{project}/webapp/view/文件夹中

喜欢:localhost/mybodule/view/index.xhtml

并且能够看到所有的 facelets 来源。如何让它404出错呢?

4

1 回答 1

0

因为我的问题与JSF404错误抛出有关。

我想出了一个答案:

向 web.xml 添加设置:

<context-param>
<param-name>facelets.RESOURCE_RESOLVER</param-name>
<param-value>our.company.CustomResourceResolver</param-value>
</context-param>

在哪里:CustomResourceResolver extends javax.faces.view.facelets.ResourceResolver

在那里我会有一个被覆盖的方法:

@Override
public URL resolveUrl(String path) {
 try {
   String fixedPath = "/WEB-INF/pages";

   return getResolvedPath(path, fixedPath);
} catch(IOException e) {
  throw new FacesException(e);
}

}

这里我们假设我们所有的页面都位于/WEB-INF/pages文件夹中

因此,每次发生异常时,它都会被解释为404

并且:我们应该删除- 如果我们想<security-constraint>web.xml用户显示他无权访问特定资源,那么这个人很好,但在我们的例子中,我们不想显示这个。我们不想向他展示这个资源已经存在的事实。

于 2013-04-26T18:57:13.660 回答