Oracle ADF Faces 常见问题解答
1. 设置
1.1. ADF Faces 依赖于特定的 JSF 实施吗?

不是的,当然如果有特定于 Oracle 的 JSF 实施, ADF Faces 可针对该实施进行优化以获得最佳性能,但 我们认为它可运行于任何 JSF 1.1 规范(或后续版本)的实施上 这一点很重要。用户可以 结合 Sun Reference Implementation 1.1_01 和 MyFaces 1.0.8(或后续版本)使用 ADF Faces。

1.2. 我可以使用什么运行时或设计时工具来运行用于演示的 WAR?

请参阅 安装 页面中的平台部分,了解部署到 JDeveloper、独立 OC4J 和 Tomcat 的方法。

尽管 ADF Faces 是我们未能结合 Java Studio Creator Build 04.06.2 运行的“vanilla”JSF。我们现在正与 Sun 合作解决 Java Studio Creator 中的这些问题。

我们已经在 IBM WebSphere Studio Application Developer 5.1.2 上进行了一定的测试。现在已经可以使用 .jsp 运行,但 .jspx 不行。如果您运行的是该用于演示的 WAR,请确保 faces-config.xml 中的文件名是最新的文件名。

2. 体系结构
2.1. 可以将标准的 Faces 标记与 ADF Faces 一起使用吗?

是的,您可以将任何标准的 Faces 标记与 ADF Faces 一起使用。您甚至可以使用 < h:form > 代替 < af:form > ,且不损失任何 ADF Faces 功能。

2.2. 使用 ADF Faces 比使用 Faces 有什么优势吗?

问得好。下面就是其中的一些优势

注意: 尚未提供或部分实现的项目以斜体显示

  1. 提供更加有效的客户端状态存储实施(减少了每个组件的大小)
  2. 丰富的组件、验证器和转换器
  3. ADF Faces 标记提供的特性通常比标准标记多,如: 所有输入组件都提供内置的标签和消息显示支持( 要了解 ADF Faces 标记和标准 Faces 标记的详细信息,请参阅 下列 文档 ).
  4. 客户端转换器/验证器 — 支持 JavaScript 的转换器/验证器将尝试在客户端截获并显示错误
  5. ADF Faces 标记可在 < af:forEach > 标记内部使用(但 < af:forEach >内部不支持标准标记)。
  6. 辅助功能 — 支持类似于 ADF UIX 辅助功能
  7. 双向语言支持 — ADF Faces 组件会自动正确显示双向语言。用户也可以使用 ADF UIX 双向语言支持中描述的“开始”和“结束”常量
  8. 局部页面呈现 (PPR) — 支持类似与 ADF UIX PPR 概述
  9. 换肤 - 支持类似于 ADF UIX 观感
  10. ADF 集成 — 引入 JSR227 支持(数据绑定)
  11. 富客户端 — 即将提供富 DHTML 客户端呈现器
2.3. ADF Faces 和 ADF UIX 之间有什么关系?

ADF Faces 是对先前的 ADF UIX 代码的重大改进。 ADF UIX 专用的 API( UINode , RenderingContext ,等。) 已由标准的 JSF API 替换,而且我们还向 组件中加入了许多可利用 JSF 体系结构优势的新特性。 为完成这一更改,我们修改了几乎所有的组件名称 和属性名称,以符合 JSF 的命名规范。 ADF UIX 和 ADF Faces 可以安装在同一 Web 应用程序中 而互不冲突。

3. 开发
3.1. 运行 JSP 时出现 'javax.servlet.jsp.JspException:Cannot find FacesContext'

您不能直接指向 JSF JSP 文件;需要在 servlet 环境路径后加上 "/faces",或将后缀(仅在 URL 中)更改为 ".faces"。

3.2. 我在 UIXComponentTag.setProperties() 中遇到了 java.lang.ClassCastException

JSF 要求所有 JSF JSP 标记都有 < f:view > JSP 标记,出现这一错误的原因是没有包含 < f:view > .

3.3. 我无法正常查看对话框

无法正常查看对话框的原因可能是您安装了弹出窗口拦截程序。

3.4. 出现 '"af:commandButton" must have value or image attributes.' 错误

您使用的是 JSF 1.0(这是 JSF 1.0 RI 的一个缺陷),而 ADF Faces 要求的是 JSF 1.1。

3.5. 出现 'method assert(boolean) not found in class [XXX]' 错误

您需要启用 J2SE 1.4 Assertions。在 jdev 中,您可使用项目属性完成这一操作(选择 Tools -> Project Properties -> Profiles -> Development -> Compiler -> Enable J2SE 1.4 Assertions。)

3.6. 我的页面看上去非常糟糕,就像没有应用样式

您可能没有配置 web.xml 中的 Resources Servlet。请参阅安装说明来配置 ResourceServlet。

3.6. 输入域显示为纯文本。

您可能遗漏了与 "getXyz()" 函数匹配的 "setXyz()" 函数(此时 "getXyz()" 控制了您的域值),或者 该函数名称的拼写有错误。这将导致该属性设定 为只读。当 ADF Faces 检测到一个输入域使用的是只读属性时 它将自动把 该域转换为只读模式,则该域看起来就像 纯文本。这里您可以了解一下,如果您在这同一模型 使用了 < h:inputText > ,则第一次呈现页面时不会出现任何问题, 但当您将值发送回服务器时,由于新值不能写入到该模型中, JSF 将抛出异常。

版权所有 2003-2006,Oracle Corporation。保留所有权利。

寄送此页面
Printer View 打印机视图