0

我正在网上搜索有关使用 Oracle ADF 作为组件套件(而不是作为开发框架)以及 vanilla JSF (2.0) 的信息。

我正在与坚持解决方案使用 Oracle ADF UI 组件的客户合作。然而,融合中间件的其余部分,他完全可以跳过。因此,我希望尽可能接近 Java EE-JSF2 蓝图,并且只使用 ADF 作为 UI 组件库,例如 PrimeFaces。

所以,问题- 有可能吗?ADF 是否施加了限制/依赖性来阻止这种情况?我们可以将它单独用作组件库,还是必须依赖它的重量级框架才能使它们工作?

4

3 回答 3

3

这没用; 至少,不像人们所期望的那样。简而言之:ADF 确实支持 JSF2 和 Facelets,它们在单个应用程序中很好地共存。只要你不把它们混在一起。

我打算将 ADF 用作组件库,其方式类似于使用 PrimeFaces 或 RichFaces 的方式:添加正确的依赖项,配置需要配置的内容,然后一切顺利。当 Oracle 说 ADF 支持 JSF2 和 Facelets 时,人们会假设这种情况。

首先,您不能在<af:document />标签(或特立尼达的对应物)之外使用 ADF 组件;这意味着此标记之外的内容将被忽略,从而将使用 Facelets 的能力降至最低。因此,在 ADF 组件所在的同一页面上几乎不会有任何 Facelets 代码。

JSF + CDI 集成只能通过 Mojarra 实现获得。使用 MyFaces(当前 ADF 版本的基础),可以通过更新 MyFaces jar 和添加 CODI 使其工作,但它不能开箱即用,我没有花时间进一步研究它。

除此之外,对于布局管理,您还坚持使用 ADF 方式(通过 pageTemplateDef 和 pageTemplate 标签),因为由于对文档标签的依赖,很难在 Facelets 中混合。所以你看,Facelets 支持在那里,“标准”JSF2 页面可以存在于 ADF 应用程序中——但是要使用 ADF 的组件,你需要在 ADF 页面中。

对于任何可能感兴趣的人,一旦您使用 JDeveloper 填充本地 maven 存储库(根据原始问题中评论中建议的技术),在可以运行的 Web 应用程序(war)中具有 ADF UI 组件的最小依赖项在 WebLogic 12c 或带有 ADF 基本功能的 Glassfish 上,如下所示:

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.oracle.adf</groupId>
        <artifactId>trinidad-api</artifactId>
        <version>12.1.2-0-0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.oracle.adf</groupId>
        <artifactId>trinidad-impl</artifactId>
        <version>12.1.2-0-0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.oracle.adf</groupId>
        <artifactId>adf-richclient-api-11</artifactId>
        <version>12.1.2.0.40.66.34</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.oracle.adf</groupId>
        <artifactId>adf-richclient-impl-11</artifactId>
        <version>12.1.2.0.40.66.34</version>
        <scope>provided</scope>
    </dependency>

您还需要添加其他几个配置文件:

WEB-INF/adfc-config.xml
META-INF/adf-config.xml
META-INF/connections.xml
META-INF/wsm-assembly.xml

faces-config.xml以及web.xml文件上的进一步 ADF 样板配置。

所以,到目前为止的答案是:

是否可以(将 ADF 用作组件库)?是的。

有什么限制吗?没有 CDI(开箱即用)和有限的 Facelets 支持。JSF2 ajax 功能不能在 ADF 文档中使用 - 您必须使用 ADF 部分页面呈现,但是 JSF2 自定义组件和您可以编写的任何 ClientBehavior 都可以正常工作。

值得麻烦吗?不。

于 2013-09-19T19:41:24.517 回答
2

几个月前,Oracle ADF 仅支持 JSF 1.2。

但是随着 JDeveloper 12c 的发布, IDE 和 Oracle ADF 有了很多新特性和改进,现在有JSF 2.0 支持

因此,要回答您的问题 -的,您可以将 Oracle ADF 与 JSF2/Facelets 一起使用。

于 2013-09-11T14:19:54.787 回答
1

如果您只想通过 Maven 进行 WAR,请执行以下操作(在 JDeveloper 12c 中): 新应用程序 -> 自定义应用程序 添加 ADF Faces 技术(向右穿梭)。在向导的最后一步中选择“使用 Maven”。

于 2013-09-18T23:15:12.010 回答