1. 設定
1.1. Oracle ADF Facesは特定のJSFの実装に依存していますか
いいえ。Oracle固有のJSFの実装が提供されれば、Oracle ADF Facesもその実装でもっとも効率的に動作するよう最適化されますが、オラクルでは、Oracle ADF FacesがJSF 1.1以降のどの実装でも動作することが重要であると考えています。 Oracle ADF Facesは、Sunのリファレンス実装1.1_01またはMyFaces 1.0.8以降の実装で使用できます。
1.2. デモ版のWARの実行に使用できるランタイム・ツールまたはデザイン・タイム・ツールを教えてください
Oracle JDeveloper、スタンドアロンOC4J、およびTomcatの配置方法については、
インストール・ページのプラットフォームに関する項目を参照してください。
Oracle ADF Facesは"標準的"なJSF実装ですが、現時点では、Java Studio Creator Build 04.06.2上で動作しません。現在、Sunと協力して、Java Studio Creator側の問題の解決に取り組んでいます。
IBM WebSphere Studio Application Developer 5.1.2上では、いくつか限定的なテストを実行しました。.jspを使用したテストでは正常に動作しましたが、.jspxを使用したテストでは動作しませんでした。 デモ版のWARを実行する場合で、変更されたファイル名がある場合は、faces-config.xmlに記述されているファイル名が変更後のファイル名になっていることを確認してください。
2. アーキテクチャ
2.1. Oracle ADF Facesでは標準のFacesタグを使用できますか
はい。Oracle ADF Facesでは、すべての標準のFacesタグを使用できます。 < af:form >の代わりに< h:form >を使用しても、Oracle ADF Facesの機能が動作しなくなることは一切ありません。
2.2. 標準のFacesではなくOracle ADF Facesを使用する利点は何ですか
Oracle ADF Facesの利点を以下にいくつか示します。
注:
斜体の項目は、まだ使用できないか、一部しか実装されていない機能です。
- クライアント側で、より効率性の高い状態保存を実装しています(コンポーネントあたりのサイズを縮小)。
- コンポーネント、バリデータ、コンバータの豊富なセットを提供しています。
- Oracle ADF Facesタグには、標準のタグに比べて多機能なものが多くあります。たとえば、すべての入力コンポーネントでは、組込みでラベルおよびメッセージの表示をサポートしています(Oracle ADF Facesのタグと標準のFacesタグの相違点について詳しくは、
このドキュメントを参照してください)。
- クライアント側のコンバータ/バリデータ - JavaScript対応のコンバータとバリデータによって、クライアント上でエラーを捕捉および表示します。
- Oracle ADF Facesタグは< af:forEach >タグ内で使用できます(ただし、< af:forEach >内で標準のタグを使用することはできません)。
- アクセシビリティ - 『
ADF UIX Accessibility』と同等の機能をサポートしています。
- 双方向言語サポート - Oracle ADF Facesコンポーネントは自身を自動的に双方向言語に翻訳します。 ユーザーは、『
ADF UIX Bidirectional Language Support』に記述されている"start"および"end"定数も使用できます。
- 部分ページ・レンダリング(PPR) - 『
ADF UIX PPR overview』と同等の機能をサポートしています。
- スキニング - 『
ADF UIX Look and Feel』と同等の機能をサポートしています。
-
Oracle ADF統合 - JSR227(データ・バインディング)などをサポートします。
-
リッチ・クライアント - DHTMLによるクライアント側の多機能レンダラをサポート予定です。
2.3. Oracle ADF FacesとOracle ADF UIXの関係について教えてください
Oracle ADF Facesはその前身であるOracle ADF UIXのコードを大幅に改良したものです。 Oracle ADF UIX独自のAPI(
UINode、
RenderingContextなど)は、標準のJSF APIで置き換えられています。Oracle ADF Facesの各コンポーネントには、JSFのアーキテクチャを活かした多くの機能が追加されています。 また、この機能変更にあたって、ほとんどすべてのコンポーネント名と属性名をJSFの命名規則に合わせて変更しています。 このため、Oracle ADF UIXとOracle ADF Facesを同じWebアプリケーションにインストールしても名前の衝突が発生することはありません。
3. 開発
3.1. JSPを実行すると、'javax.servlet.jsp.JspException: Cannot find FacesContext'というエラーメッセージが表示されます
JSF JSPファイルを直接ポイントすることはできません。サーブレット・コンテキスト・パスの後に"/faces"を追加するか、接尾辞(URL内のみ)を".faces"に変更する必要があります。
3.2. UIXComponentTag.setProperties()でjava.lang.ClassCastExceptionが発生します
JSFでは、すべてのJSF JSPタグをJSPタグ< f:view >で囲む必要があります。この分かりにくいエラーは、< f:view >をインクルードできなかったために発生したものです。
3.3.ダイアログ・ウィンドウの表示に問題があります
ポップアップ・ブロッカーがインストールされていると、ダイアログの表示に問題が発生することがあります。
3.4. '"af:commandButton" must have value or image attributes'というエラーが表示されます
JSF 1.0を使用しているためです(このエラーはJSF 1.0 RIのバグです)。Oracle ADF FacesにはJSF 1.1が必要です。
3.5. 'method assert(boolean) not found in class [XXX]'というエラーが表示されます
J2SE 1.4アサーションを有効にする必要があります。 このアサーションは、jdevでは、プロジェクト・プロパティで設定できます(「
Tools」→「
Project Properties」→「
Profiles」→「
Development」→「
Compiler」→「
Enable J2SE 1.4 Assertions」を選択します)。
3.6. ページのスタイルが設定されていないかのように正しく表示されません
Web.xmlファイルのリソース・サーブレットが設定されていません。リソース・サーブレットの設定方法については、インストール手順を参照してください。
3.7. 入力フィールドがプレーン・テキストで表示されます
フィールド値を制御する"getXyz()"関数に対応した"setXyz()"関数が存在していないか、関数名のスペルが間違っています。 このため、当該プロパティが読取り専用になっています。 Oracle ADF Facesは、入力フィールドが読取り専用のモデル・プロパティを使用していることを検出すると、そのフィールドを読取り専用モードに自動的に切り替えます。入力フィールドがプレーン・テキストに見えるのはそのためです。 同じモデル・プロパティを< h:inputText >で試すと、ページを最初に表示したときには正常に表示されますが、サーバーにぺージを返すと、サーバーがモデルに新しい値を書き込むことができないため例外が発生します。