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

前
 
次
 

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

この章では、印刷や電子メールに適したモードでページをどのように表示できるかについて説明します。

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

34.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()を使用して確認できます。


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

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

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

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

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

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

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

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

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

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

図34-3 発注書のWebページ

発注書のWebページ

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

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

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

34.2 印刷用ページの表示

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

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

34.2.1 showPrintablePageBehaviorタグの使用方法

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

showPrintablePageBehaviorタグを使用する手順:

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


    注意:

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


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

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

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

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

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

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

始める前に:

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

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

  1. 電子メールで送信するページにコマンド・コンポーネントを挿入します。詳細は、第20章「ナビゲーション・コンポーネントの使用」を参照してください。

  2. マネージドBeanで、現行のURLにorg.apache.myfaces.trinidad.agent.email=trueを追加し、ページを電子メールで送信するactionListenerメソッドまたは別のサービスを作成します。

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

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

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

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

  1. コンポーネント・パレットで、「一般コントロール」パネルから、「ボタン(実行)」をページ上のどこかにドラッグ・アンド・ドロップします。

  2. プロパティ・インスペクタで、「共通」セクションを開き、「Destination」をページの名前と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. 必要に応じて、特にページの電子メール・バージョン用に、エージェントを使用してスキンを作成します。例34-1に、電子メールでレンダリングされる表の枠線をどのように指定するかを示しています。

    例34-1 電子メール送信可能なページのスキン

    af|table {
      border: 1px solid #636661;
    }
     
    @agent email { 
      af|table 
       {border:none}
    }
    
    af|table::column-resize-indicator {
      border-right: 2px dashed #979991;
    }
    

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

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

ADF Facesフレームワークでは、レンダー・レスポンス・フェーズでリクエスト・パラメータorg.apache.myfaces.trinidad.agent.email=trueを受信すると、関連付けられたフェーズ・リスナーにより、フレームワークに次のことを実行するように通知する内部フラグが設定されます。

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

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

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

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

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