gpt4 book ai didi

jsf - javax.faces.DEFAULT_SUFFIX 不起作用

转载 作者:行者123 更新时间:2023-12-04 16:53:24 26 4
gpt4 key购买 nike

我一直在阅读一些关于 javax.faces.default_suffix 的帖子,但在尝试实现它时没有成功。

使用:jsf 2.0、jboss 7.1、Mojarra 2.1.5

  • 我需要在 URL 中显示以下内容: localhost:8080/myproject/index.jsf
  • 导航时还需要显示xxx.jsf

  • web.xml
    <welcome-file-list>
    <welcome-file>/comum/inicio/index.xhtml</welcome-file>
    </welcome-file-list>

    <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>*.xhtml</url-pattern> **have tried *.jsf but with no success**
    </servlet-mapping>

    <context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.jsf</param-value>
    </context-param>

    你能帮我解决这个问题吗?谢谢

    最佳答案

    您混淆了默认后缀和 URL 模式的含义。
    javax.faces.DEFAULT_SUFFIX表示 的默认后缀物理您在 web 应用程序中的文件,它代表一个 JSF 文件。这在 JSF 2.0 中默认为 .xhtml .如果你把它改成 .jsf ,那么你应该重命名来自 some.xhtml 的所有物理文件至 some.jsf .这通常没有完全意义。您不应该这样做,只需完全摆脱该上下文参数即可。
    <url-pattern>表示最终用户必须在请求 URL 中使用的默认 URL 模式,以便调用 FacesServlet (反过来使用默认后缀配置根据 URL 定位物理文件)。你说你要使用*.jsf在 URL 中,但是您已将其设置为 *.xhtml .这是不对的,更改默认后缀不是正确的解决方案。

    您应该只设置 URL 模式,而不是默认后缀。

    <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>*.jsf</url-pattern>
    </servlet-mapping>

    这样 http://localhost:8080/myproject/index.jsf将工作。

    然后还有第三个问题:您完全误解了欢迎文件的用途。它不应该代表主页的路径。它应该代表物理文件的文件名,当像 / 这样的文件夹时,您希望将其作为默认文件提供。 , /foo/ , /foo/bar/等要求。只需将其设置为 index.jsf .
    <welcome-file-list>
    <welcome-file>index.jsf</welcome-file>
    </welcome-file-list>

    但是,您应该记住,容器将在继续请求之前验证物理文件是否存在,以便在不存在时正确显示 404 错误。如 *.jsf实际上是一个虚拟 URL,该步骤将失败。您可以通过放置一个物理上存在但 来欺骗容器来解决这个问题。空 index.jsf index.xhtml 旁边的文件所需文件夹中的文件。

    这样 http://localhost:8080/myproject/只要你有一个真正的 index.xhtml文件和空 index.jsf根文件夹中的文件。

    更容易的是摆脱虚拟 URL 并坚持使用 *.xhtml每时每刻。

    也可以看看:
  • JSF Facelets: Sometimes I see the URL is .jsf and sometimes .xhtml. Why?
  • JSF welcome file is not recognized
  • richfaces + index.xhtml having errors
  • 关于jsf - javax.faces.DEFAULT_SUFFIX 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17598994/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com