ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド
11gリリース1 (11.1.1.7.0)
B52029-11
  目次へ移動
目次

前
 
次
 

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

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

この章では、次の項目について説明します。

35.1 様々な出力モードの使用の概要

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


注意:

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

<c:if test="#{requestContext.agent.type ==  'webcrawler'}">
  <af:goLink 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()を使用して確認できます。


35.2 印刷用ページの表示

showPrintablePageBehaviorタグを子としてコマンド・コンポーネントに配置します。クリックすると、フレームワークは、printableBehaviorタグに対する親のコンポーネントから始まるコンポーネント・ツリーを、panelSplitterまたはpanelAccordion、あるいはツリーのルート(いずれか早い方)に到達するまで上っていきます。ツリーはそこからレンダリングされます。さらに、印刷バージョンに必要のない一部のコンポーネント(ボタン、タブ、スクロールバーなど)は省略されます。

たとえば、ファイル・エクスプローラ・アプリケーションでは、図35-1に示すように、表を含むpanelCollectionコンポーネントのツールバーの内部にcommandButtonコンポーネントを配置できます。

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

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

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

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

ページの印刷可能なバージョン

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

ボタンをクリックすると、actionイベントは取り消されます。かわりに、サーバーに対して、ページの印刷可能なバージョンが要求されます。

35.2.1 showPrintablePageBehaviorタグの使用方法

showPrintablePageBehavior タグをコマンド・コンポーネントの子として使用できます。

showPrintablePageBehaviorタグを使用する手順:

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


    注意:

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


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

35.3 メール可能なページの作成

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

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

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

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

メール・クライアントでレンダリングするページを変換するようにADF Facesフレームワークに通知するには、次のリクエスト・パラメータを、メール送信するページのURLに追加します。

org.apache.myfaces.trinidad.agent.email=true

たとえば、図35-3に示すように、注文書を表示するページがあるとします。

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

発注書のWebページ

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

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

電子メール・クライアントでのページ

ヒント:

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

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

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


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

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

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

  1. コンポーネント・パレットの「共通コンポーネント」パネルで、ページのいずれかの場所に実行ボタンをドラッグ・アンド・ドロップします。

  2. プロパティ・インスペクタで、「共通」セクションを開いて、ページの名前になる宛先と、org.apache.myfaces.trinidad.agent.email=trueを設定します。

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

    myPage.jspx?org.apache.myfaces.trinidad.agent.email=true
    
  3. ページを右クリックし、「実行」を選択して、デフォルトのブラウザでページを実行します。

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

  4. ブラウザでページが表示されたら、ページに追加した「goButton」をクリックします。これでブラウザに再びページが表示されますが、電子メール・クライアントで処理できるページに変換されています。

  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;
    }
    

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

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

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

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

  • ページにすべてのCSSを追加しますが、ページに含まれているコンポーネントに対してのみです。

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

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

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

また、パラメータ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