我正在网上搜索有关使用Oracle ADF作为组件套件(而不是作为开发框架)的信息,以及vanilla JSF(2.0)。
我正在与坚持该解决方案使用Oracle ADF UI组件的客户合作。然而,其余的融合中间件可以完全跳过他所关心的所有内容。因此,我希望尽可能接近Java EE-JSF2蓝图,并且只使用ADF作为UI组件库,例如PrimeFaces。
所以,问题 - 有可能吗? ADF是否施加了可以阻止此情况的限制/依赖性?我们是否可以仅将其用作组件库,还是必须依赖其重量级框架才能使其工作?
答案 0 :(得分: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应用程序(战争)中具有ADF UI组件的最小依赖性可以在具有ADF要素的WebLogic 12c或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都可以正常工作。
麻烦值得吗?没有。
答案 1 :(得分:2)
几个月前,Oracle ADF仅支持JSF 1.2。
但是with the release of JDeveloper 12c有很多新的功能和改进,而不是IDE和Oracle ADF,现在有JSF 2.0 Support。
因此,要回答您的问题 - 是,您可以将Oracle ADF与JSF2 / Facelets一起使用。
答案 2 :(得分:1)
如果您只想通过Maven进行WAR(请参阅JDeveloper 12c): 新申请 - &gt;定制应用 添加ADF Faces技术(穿梭到右侧)。 在向导的最后一步中选择“使用Maven”。