【问题标题】:Java EE6> Packaging JSF facelets (xhtml) and ManagedBeans as JARJava EE6> 将 JSF facelets (xhtml) 和 ManagedBeans 打包为 JAR
【发布时间】:2011-05-24 00:15:29
【问题描述】:

是否可以将 JSF facelets 和 ManagedBeans 打包到 JAR 文件中?这样我们就可以在不同的war/ear项目中使用这个代码和UI组合了?

我不是在谈论 JSF 组件!

如果是 - 你能指点我一篇教程或博客文章吗

我需要有关 Jar 结构和 Jar 中所需的其他文件的详细信息?

谢谢麦克斯

【问题讨论】:

    标签: jsf jakarta-ee jar facelets packaging


    【解决方案1】:

    是的,这绝对是可能的,假设您使用的是 JSF 2.0,它是 Java EE 6 的一部分。

    对于托管 bean 和其他 JSF 类,如验证器、转换器等,只需使用 @ManagedBean@FacesValidator@FacesConverter 等注释它们,并以通常的方式将它们打包到 JAR 中。您只需在 JAR 中提供与 JSF 2.0 兼容的/META-INF/faces-config.xml 文件。

    <?xml version="1.0" encoding="UTF-8"?>
    <faces-config
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
        version="2.0">
    </faces-config>
    

    这样,JSF 将被触发以扫描 JAR 中的类以查找 JSF 特定的注释。或者,您也可以在 JAR 的 faces-config.xml 中以 JSF 1.x 方式注册它们。

    对于 Facelets 资源,只需将它们放在 JAR 的 /META-INF/resources 文件夹中即可。它将被视为与 WAR 的公共网络内容相同的方式。

    另见:

    【讨论】:

    • 是否可以在ear lib目录下添加jar文件?还是应该放在war的WEB-INF/lib目录下?
    • 创建对我的托管 bean 非常有效的答案。但是我该如何处理复合材料?我有一些复合:实现放在一个包中,这是一些 EJB 的视图。我想在我的主应用程序中使用这些,我不想在主 WAR 中收集所有组合。在包含的 WAR 中,我可以通过像 这样的标签来调用它们,其中 'e:' 是库的名称空间。资源解析器似乎无法解决此问题。
    • @BalusC 如果 META-INF/faces-config.xml 不包含 beans 信息怎么办?我的意思是托管bean是否使用注释?会去吗?或者这里的 faces-config.xml 只需要让 IDE 识别这只是 jsf 库?
    猜你喜欢
    • 2012-03-06
    • 2012-08-04
    • 2015-10-19
    相关资源
    最近更新 更多