【问题标题】:Prefix URL-Mapping in JSF causing FileNotFound-ErrorJSF 中的前缀 URL 映射导致 FileNotFound-Error
【发布时间】:2012-08-15 20:08:39
【问题描述】:

我是一名 JSF 初学者,并尝试使用 Spring 和 Hibernate 构建一个小型 JSF2 Web 应用程序。我选择的服务器是 JBOSS 7.1 AS。

我在尝试使用前缀 URL 模式映射 servlet 时遇到了一个奇怪的错误。这是 web.xml 中声明 Servlet 的部分:

<servlet>
    <servlet-name>FacesServlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>FacesServlet</servlet-name>
    <url-pattern>/webapplication/*</url-pattern>
</servlet-mapping>

如果我现在将浏览器指向“localhost:8080/myapp/webapplication/index.xhtml”,我会收到 Mojarra/Facelets 生成的错误:“/index.xhtml Not Found in ExternalContext as a Resource”。 如果我改为将 URL 模式配置为“*.xhtml”,一切正常。

我根本不知道为什么前缀模式不起作用:/

问候

【问题讨论】:

  • @Petr:如果他没有,他根本不会得到错误页面:)
  • @BalusC:是的,没错。我今天真的累了:)
  • 我发现的另一件事:如果我使用欢迎文件“/wepapplication/index.xhtml”,然后将浏览器定向到我的应用程序,会令人惊讶地显示结果......或没有。而不是 FileNotFound-Error 我得到一个空页面。查看它的源代码,我可以看到它包含未编译的 JSP 代码。不过,这只有在我使用前缀模式时才会发生。

标签: jsf web.xml url-pattern


【解决方案1】:

我找到了解决方案:D!

当使用前缀模式时,我认为我必须将我的 xhtml 文件放在该名称的文件夹中。 例如,我使用了模式“/webapplication/*”,所以我创建了一个文件夹“webapplication”并将我的 web 文件放在那里。现在,当我的浏览器指向 “{host}/myapp/webapplication/index.xhtml” 我希望服务器搜索“{root}/webapplication/index.xhtml”中的文件。相反,Servlet 将 URL 解析为 “{host}/myapp/index.xhtml”。因为文件没有放在那里,所以我得到了 FileNotFound-Error。

我还学会了不要给我的资源文件夹和我的 url-patterns 同名。

【讨论】:

    猜你喜欢
    • 2011-03-04
    • 2011-02-18
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2023-04-03
    • 2011-10-13
    相关资源
    最近更新 更多