【问题标题】:What is the replacement for Seam Resource Servlet in Java EE 6?Java EE 6 中 Seam Resource Servlet 的替代品是什么?
【发布时间】:2012-09-06 15:30:02
【问题描述】:

在我们之前的 Seam 2 项目中,我们在 web.xml 中有以下部分来处理加载静态资源,例如 css 或 img:

  <servlet>
    <servlet-name>Seam Resource Servlet</servlet-name>
    <servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Seam Resource Servlet</servlet-name>
    <url-pattern>/seam/resource/*</url-pattern>
  </servlet-mapping>

当使用 CDI + JSF2 时,它的替代品是什么?是否可以使用标准的 Java EE 6 机制来完成,或者我们是否需要 CDI 扩展或任何其他附加库?

PS:该项目基于maven并部署在tomcat 7上,所以如果需要一些扩展,我会很高兴根据依赖关系。

【问题讨论】:

    标签: jsf-2 java-ee-6 tomcat7 cdi


    【解决方案1】:

    Seam 2 从未成为 Java EE 5 的一部分,因此在 Java EE 6 中没有“替代”的方法。您可能需要查看 Seam 3 或 Seam 2 的任何后续版本。

    “静态资源”位于标准 servlet 容器中,已由容器的内置默认 servlet 完全自动且透明地处理。只需将文件直接放到公共 webcontent 文件夹中(您还可以在其中放置 JSP/Facelets 文件)。

    然而,JSF2 有一个新的资源处理机制,它允许在组件/渲染器中使用 @ResourceDependency 等自动包含资源,但这已经被 FacesServlet 本身和新的 JSF 2.0 &lt;h:head&gt; 考虑在内&lt;h:body&gt; 组件。但是我不确定这是否与 Seam 2 所做的有关,我从未真正使用过 Seam。

    CDI 与这一切关系不大,它是一个 bean 管理 API,而不是静态资源管理 API。

    【讨论】:

    • 嗯,也许你可以要求澄清而不是说我的问题没有意义。我只是想解释一下,在以前的项目中,我们使用 Seam 2,我们手头有 SeamResourceServlet 来管理资源文件,现在我们有一个基于 JSF2+CDI 的项目,所以不是 Seam 2 的所有内容都在手边不再需要但仍然需要,这就是为什么我要求在标准 JSF 或扩展中替换该 Servlet。具体问题是css中的图像引用,它通过FacesServlet,然后找不到。
    • 您应该问具体问题,而不是问一个本身没有多大意义的过于笼统的问题。然后我会发布这样的答案:stackoverflow.com/questions/6925733/…
    • 问题是,我从客户那里得到了一个 css,应该保持不变。在那个 css 中有对图像的引用,这些图像在被 FacesServlet 处理时附加了一个 .jsf,因此不再被发现。所以问题仍然与最初提出的问题相同 - 当不再使用 Seam 2 时,通过切换到 CDI/JSF2,我能做些什么来获得与 SeamResourceServlet 相同的功能?
    • 那么只需使用&lt;link rel="stylesheet"&gt; 而不是&lt;h:outputStylesheet&gt;。容器的默认 servlet 将为它提供服务。
    猜你喜欢
    • 2011-06-09
    • 1970-01-01
    • 2016-08-30
    • 2022-06-25
    • 2014-04-12
    • 2018-03-11
    • 2011-08-31
    • 2012-06-04
    • 2011-02-03
    相关资源
    最近更新 更多