プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle ADF FacesによるWebユーザー・インタフェースの開発
12c (12.2.1.2.0)
E82917-02
目次へ移動
目次

前
次

40 異なる出力モードの使用方法

この章では、印刷や電子メールに適したモードでページを表示するためのADF Facesの使用方法ついて説明します。トピックには、showPrintablePageBehaviorタグを使用してページを印刷する方法および要求パラメータorg.apache.myfaces.trinidad.agent.email=trueを使用して電子メール送信可能なページを作成する方法が含まれます。

この章の内容は次のとおりです。

40.1 異なる出力モードの使用方法について

ADFアプリケーションを構成するWebページのページ全体が印刷に適しているとはかぎりませんが、ADFは印刷またはメールに適するようにコンテンツをレンダリングする機能があります。

ADF Facesでは、ページを印刷または電子メール用に簡略化されたモードで出力できます。たとえば、ユーザーがページ(またはページの一部)を印刷できるようにし、ただしWebブラウザでレンダリングされているとおりにページを印刷するのではなく、スクロール・バーやボタンなど、印刷ページに必要ないアイテムを削除することができます。ページが電子メールで送信される場合は、電子メール・クライアントが正しく表示できるようにページを簡略化する必要があります。

注意:

デフォルトでは、ADF Facesフレームワークによりアプリケーションが検索エンジンによってクロール中であると検出されると、クローラ用に電子メール用のページに似た簡略化された形式でページが出力されます。Web Crawlerの専用コンテンツを生成する場合、ELでアクセス可能なAgentインタフェースを使用して、サイトをクロール中であるエージェントを検出し、次のように指定したリンクへエージェンを転送します。

<c:if test="#{requestContext.agent.type ==  'webcrawler'}">
  <af:link text="This Link is rendered only for web crawlers"
             destination="http://www.newPage.com"/>
</c:if>

詳細は、『Trinidad Javadoc』を参照してください。

印刷可能なページを表示するために、ADF FacesにはshowPrintablePageBehaviorタグがあり、コマンド・コンポーネントとともに使用すると、ユーザーはブラウザに簡略バージョンのビューを表示して、それを印刷できます。

メールに対応する場合、ADF Facesでは、Microsoft Outlook 2007、Mozilla Thunderbird 10.0.5、あるいはGmail電子メール・クライアントのいずれかの表示に適したページへの変換に使用できるAPIが提供されます。

ヒント:

現行の出力モード(emailまたはprintable)には、AdfFacesContextから入ることができます。このコンテキストはELでアクセスできるため、ELを使用してJSPページの出力モードにバインドできます。たとえば、次の式を使用して、現行モードがemailでない場合にのみ、図がレンダリングされるようにします。

<af:activeImage source="/images/stockChart.gif" rendered="#{adfFacesContext.outputMode != "email"}"/>

現行モードはAdfFacesContext.getOutputMode()を使用して確認できます。

40.1.1 出力モードのユースケース

大分部のWebページは、印刷または電子メールに適していませんが、ユーザーにはその機能が必要な場合があります。たとえば、File Explorerアプリケーションでは、buttonコンポーネントを、図40-1に示すように、表が含まれているpanelCollectionコンポーネントのツールバー内に配置できます。

図40-1 ページの一部を印刷するためのボタン

この図は周囲のテキストで説明しています

ユーザーがボタンをクリックすると、ページが新規のウィンドウ(ブラウザによってはタブ)に、図40-2のように簡略化された形で表示されます。

図40-2 ページの印刷可能なバージョン

この図は周囲のテキストで説明しています

表の内容のみが印刷用に表示されます。ツールバー、ボタン、スクロール・バーなどの不要なコンポーネントはすべてレンダリングされません。

アプリケーション内のページを電子メールで送信することが必要になる場合があります。たとえば、Web上で作成された注文書は、多くの場合、セッションの最後に購入者に電子メールで送信されます。しかし、電子メール・クライアントでWebブラウザへのレンダリングに使用される外部スタイルシートがサポートされていないために、正しくレンダリングされないという理由で、同じページを電子メールで送信できません。

図40-3に示すように、発注書が表示されたページがあるとします。

図40-3 注文書のWebページ

この図は周囲のテキストで説明しています

ユーザーが上部の「電子メール可能なページ」リンクをクリックすると、actionListenerメソッドまたは別のサービスによりorg.apache.myfaces.trinidad.agent.email=trueが現行のURLに追加され、ページが電子メールで送信されます。図40-4に、メール・クライアントに表示されるページを示します。

図40-4 メール・クライアントのページ

この図は周囲のテキストで説明しています

40.2 印刷用ページの表示

ADFアプリケーションのユーザーがWebページを印刷するとき、Webページに表示されているADF Facesコンポーネントを印刷するかどうかを指定できます。

ADF Facesフレームワークを使用すると、showPrintablePageBehaviorタグをコマンド・コンポーネントの子として置く場合に、印刷に適したバージョンのページを印刷できます。クリックすると、フレームワークは、printableBehaviorタグに対する親のコンポーネントから始まるコンポーネント・ツリーを、panelSplitterpanelAccordionまたはpopupコンポーネント、あるいはツリーのルート(いずれか早い方)に到達するまで上っていきます。ツリーはそこからレンダリングされます。さらに、印刷ページで不要なコンポーネント(ボタン、スクロール・バーなど)は省略されます。

コマンド・コンポーネントがクリックされると、アクション・イベントは取り消されます。かわりに、サーバーに対して、ページの印刷可能なバージョンが要求されます。

40.2.1 showPrintablePageBehaviorタグの使用方法

showPrintablePageBehaviorタグは、コマンド・コンポーネントの直接の子として使用されます。

始める前に:

コンポーネントが印刷送信可能なページでどのように表示されるかについて理解しておくと役立ちます。詳細は、「印刷用のページの表示」を参照してください。

showPrintablePageBehaviorタグを使用する手順:

  1. レイアウト・コンポーネントのいずれかで、印刷するコンテンツを含むファセットにコマンド・コンポーネントを追加します。手順の詳細は、「ボタンおよびリンクをナビゲーションとActionEventの配信に使用する方法」を参照してください。

    注意:

    ユーザーがページ全体を印刷できるようにレイアウト・コンポーネントの外にshowPrintablePageBehaviorコンポーネントを挿入できますが、印刷結果がレイアウトとおおまかにしか一致せず、一部のコンテンツが表示されない場合があります。そのため、ユーザーがファセットの全コンテンツを印刷できるようにするには、ユーザーが通常印刷するコンテンツを含むファセットにコマンド・コンポーネントとshowPrintablePageBehaviorコンポーネントを配置することが重要です。複数のファセットで印刷をサポートする必要がある場合は、各ファセットにコマンド・コンポーネントを1つとshowPrintablePageBehaviorタグを挿入します。すべてのコンテンツを印刷するには、ユーザーは一度に1つのファセットで印刷コマンドを実行する必要があります。

  2. 「コンポーネント」ウィンドウで、「操作」パネルから、「印刷可能なページの表示動作」をドラッグし、子としてコマンド・コンポーネントにドロップします。

40.3 電子メール送信可能なページの作成

ADFアプリケーションのWebページに表示されているADF Facesコンポーネントが、すべてメールの出力にレンダリングされるとはかぎりません。ただしADF Facesは、各種のメール・クライアントに応じて多数のコンポーネントを適切にレンダリングできます。

アプリケーション内のページを電子メールで送信することが必要になる場合があります。たとえば、Web上で作成された注文書は、多くの場合、セッションの最後に購入者に電子メールで送信されます。しかし、電子メール・クライアントでWebブラウザへのレンダリングに使用される外部スタイルシートがサポートされていないために、正しくレンダリングされないという理由で、同じページを電子メールで送信できません。

ADF Facesフレームワークでは、JSFページの自動変換が行われるため、Microsoft Outlook 2007、Mozilla Thunderbird 10.0.5、およびGmailメール・クライアントで正しくレンダリングされます。

すべてのコンポーネントが電子メール・クライアントでレンダリングできるとはかぎりません。次のコンポーネントは変換できるため、電子メール・クライアントで正しくレンダリングできます。

  • document

  • panelHeader

  • panelFormLayout

  • panelGroupLayout

  • panelList

  • spacer

  • showDetailHeader

  • inputText (readOnlyとしてレンダリング)

  • inputComboBoxListOfValues (readOnlyとしてレンダリング)

  • inputNumberSlider (readOnlyとしてレンダリング)

  • inputNumberSpinbox (readOnlyとしてレンダリング)

  • inputRangeSlider (readOnlyとしてレンダリング)

  • outputText

  • selectOneChoice (readOnlyとしてレンダリング)

  • panelLabelAndMessage

  • image

  • tree

  • table

  • treeTable

  • column

  • link(テキストとしてレンダリング)

電子メール送信可能なページでは、table内のすべての行とtreeTable内のすべてのノードは、各ノードがページ内で制限まで展開された状態でレンダリングされます。表示するデフォルトの行数は50です。ビュー・オブジェクトが取得する行数の最大値は、データ・レイヤー(MaxFetchSizeプロパティで)、あるいはアプリケーション・レイヤー(adf-config.xmlに指定されるrowLimitプロパティで)によって制限されます。rowLimitプロパティは、アプリケーション内のすべてのビュー・オブジェクト問合せのグローバルな上限です。MaxFetchSizeが指定された場合、そのビュー・オブジェクトについてはrowLimitは無視されます。電子メール送信可能なページでは、表示する行数の最大値を表属性rowsを使用して指定することもできます。rowsの値は、MaxFetchSizeまたはrowLimitの定義された値より小さい場合のみ使用されます。treeおよびtreeTableでは、nonScrollableRowsを使用して表示する行数を制限します。

注意:

電子メール送信可能なページの作成中にPanelGroupLayoutコンポーネントを含める場合、HTMLソースの<table>… </table>要素内の<td width="100%"></td>エントリを削除します。そうしないと、フッター行が電子メール・クライアントで正しくレンダリングされません。

デフォルトでは、電子メール対応ページは、内部のスタイルシートを使用するのではなく、関連するHTML要素のstyle属性に直接インラインで記述するスタイルで表示されます。web.xmlのパラメータoracle.adf.view.DEFAULT_EMAIL_MODEinternalまたはinlineのいずれかに設定し、この動作を構成できます。

40.3.1 電子メール送信可能なページの作成方法

電子メールで送信されるページのURLにリクエスト・パラメータに追加することにより、ADF Facesフレームワークに対して、ページを電子メール・クライアントでレンダリングするために変換することを通知します。

始める前に:

コンポーネントが電子メール送信可能なページでどのように表示されるかについて理解しておくと役立ちます。詳細は、「電子メール送信可能なページの作成」を参照してください。

電子メール送信可能なページを作成する手順:

  1. 電子メールで送信するページにコマンド・コンポーネントを挿入します。詳細は、「ナビゲーション・コンポーネントの使用」を参照してください。
  2. マネージドBeanで、電子メールで送信されるページの現行のURLにorg.apache.myfaces.trinidad.agent.email=trueを追加する、actionListenerメソッドまたは別のサービスを作成します。

    注意:

    デフォルトでは、フレームワークにより、内部のスタイルシートが作成されるのではなく、各HTML要素にスタイルの情報がインライン化されます。web.xmlのパラメータoracle.adf.view.DEFAULT_EMAIL_MODEinternalまたはinlineのいずれかに設定し、この動作を構成できます。リクエスト・パラメータをorg.apache.myfaces.trinidad.agent.email=internalまたはorg.apache.myfaces.trinidad.agent.email=inlineに設定することで、internalまたはinlineのいずれかのモードを強制してリクエストをレンダリングすることもできます。

  3. コマンド・コンポーネントを選択し、「プロパティ」ウィンドウで、「ActionListener」の値としてメソッドまたはサービスを設定します。

    ヒント:

    メールをオフラインで表示できるようにするには、次のリクエスト・パラメータを、メール送信するページのURLに追加します。

    org.apache.myfaces.trinidad.agent.email=true&oracle.adf.view.rich.render.emailContentType=multipart/related
    

    フレームワークは、HTMLをMIME (multipart/related)に変換し、メールがオフラインで表示されるようにイメージを埋め込みます。

40.3.2 電子メール・クライアントでのページのレンダリングのテスト方法

ページの開発を完了する前に、電子メール・クライアントでページがどのようにレンダリングされるかをテストすることもできます。これはButtonコンポーネントを使用すれば簡単にできます。

電子メール送信可能なページをテストする手順:

  1. 「コンポーネント」ウィンドウで、「一般コントロール」パネルから、「ボタン」をページ上のどこかにドラッグ・アンド・ドロップします。
  2. 「設計」タブで「ボタン」を右クリックし、次に「共通」セクションで「宛先」をページの名前にorg.apache.myfaces.trinidad.agent.email=trueを足したものに設定します。

    たとえば、ページの名前がmyPageの場合、宛先属性の値は次のようになります。

    myPage.jspx?org.apache.myfaces.trinidad.agent.email=true
    

    図40-5 宛先属性の設定

    この図は周囲のテキストで説明しています
  3. ページを右クリックし、「実行」を選択して、デフォルトのブラウザでページを実行します。

    アプリケーションを初めて実行し、新しいドメインを統合WebLogic Serverで開始する際に、「デフォルト・ドメインの作成」ダイアログが表示されます。ダイアログを使用して新しいドメインの管理者パスワードを定義します。入力するパスワードは8文字以上の長さで、アルファベット以外の文字を1つ以上使用する必要があります。

  4. ブラウザでページが表示されたら、ページに追加した「ボタン」をクリックします。これでブラウザに再びページが表示されますが、電子メール・クライアントで処理できるページに変換されています。
  5. ブラウザで、ページのソースを表示します。たとえば、Mozilla Firefoxでは、「表示」→「ページのソース」を選択します。ソース全体を選択してコピーします。
  6. 電子メール・クライアントで新規メッセージを作成します。ページのソースをメッセージに貼り付け、それを自分宛てに送信します。

    ヒント:

    HTMLコードを貼り付けているので、電子メール本体にそのHTMLを挿入するための挿入コマンドを使用することが必要になります。たとえば、Thunderbirdでは、「挿入」→「HTML」を選択します。

  7. 必要に応じて、特にページの電子メール・バージョン用に、エージェントを使用してスキンを作成します。次の例では、メールに表示された表の上の枠を指定する方法を示します。
    af|table {
      border: 1px solid #636661;
    }
     
    @agent email { 
      af|table 
       {border:none}
    }
    
    af|table::column-resize-indicator {
      border-right: 2px dashed #979991;
    }
    

    スキンの作成の詳細は、「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。

40.3.3 実行時の処理: ADF FacesでJSFページがどのようにして電子メール送信可能なページに変換されるか

ADF Facesフレームワークがレンダー・レスポンス・フェーズでリクエスト・パラメータorg.apache.myfaces.trinidad.agent.email=trueを受信する場合、関連するフェーズ・リスナーは、フレームワークに次の操作の実行を通知する内部フラグを設定します。

  • HTMLからすべてのJavaScriptを削除します。

  • すべてのCSSをページに追加します。ただし、そのページに含まれるコンポーネントでグローバル・スタイルのもののみ(名前にパイプ文字(|)がないもの)。

  • HTMLからCSSリンクを削除します。

  • すべての相対リンクを絶対リンクに変換します。

  • 絶対URLを持つイメージをレンダリングします。

  • 内部のスタイルシートを作成するのではなく、各HTML要素にスタイルの情報をインライン化します。

また、パラメータoracle.adf.view.rich.render.emailContentType=multipart/relatedを追加する場合、フレームワークは、HTMLからMIME (multipart/related)に変換し、メールがオフラインで表示されるようにイメージを埋め込みます。リクエスト・パラメータは全体で次のようになります。

org.apache.myfaces.trinidad.agent.email=true&oracle.adf.view.rich.render.emailContentType=multipart/related