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

前
 
次
 

35 様々な出力モードの使用

この章では、印刷やメール送信に適したモードでページを表示する方法について説明します。トピックにはshowPrintablePageBehaviorタグを使用してページ・コンテンツを印刷する方法、リクエスト・パラメータ,org.apache.myfaces.trinidad.agent.email=trueにより電子メール可能なページを作成する方法、およびリクエスト・パラメータorg.apache.myfaces.trinidad.outputMode=attachmentによりアタッチメンント・ページを作成する方法が含まれています。

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

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

ADF Facesでは、印刷またはメール送信用の簡単なモードでページを出力できます。電子メールへの添付用にリッチな対話型ページの出力も可能です。たとえば、Webブラウザにレンダリングされるようにページを正確に印刷するのではなく、ページ(またはページの一部)を印刷できるようにする場合、印刷するページに不要なアイテム(スクロール・バーやボタンなど)を削除できます。ページをメール送信する場合、メール・クライアントで正しく表示できるようにページを簡略化する必要があります。ページが電子メールに添付され、メール・クライアントではなくブラウザに表示される場合は、ページを簡略化する必要はありません。


注意:

デフォルトでは、ADF Facesフレームワークで、検索エンジンによるアプリケーションのクロールが検出されると、メール可能なページの形式と同様にクローラの簡単な形式でページが出力されます。Webクローラの特殊なコンテンツを生成する場合、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が提供されます。アタッチメント・モードでは、ADF Facesでは、電子メール・アタッチメントから起動された場合、任意のブラウザでの表示に適したページへの変換に使用できるAPIが提供されます。


ヒント:

現在の出力モード(email, attachmentまたは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メソッドまたは別のサービスで、現在のURLにorg.apache.myfaces.trinidad.agent.email=trueを追加してページをメール送信します。図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では、「Insert」→「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

35.4 アタッチメント・ページの作成

アタッチメント・モードにより、アタッチメントの作業に必要なリソースのダウンロードのために1回限りのサーバー接続を要するページのメールへの添付ができます。メールを受け取ったユーザーがアタッチメント・ページを開くと、オフラインでの作業時に必要な対話性を提供するため、ブラウザはそのページに参照された補助リソース (スタイルシート、イメージ、およびJavaScriptライブラリ) をリクエストします。

補助リソース (スタイルシート、イメージ、およびJavaScriptライブラリ) がアプリケーション・サーバーとは別にホストされている場合は、アタッチメント・シートのリソースURlがそのリソースをホストしているサーバーを指すように書き換えられていることを確認する必要があります。これを行うには、URIの書き換えルールを定義する必要があります。ADF Facesには、リソースURIを変更し、1つ以上の接頭辞、またはベース・リソースURIをリソースに指定することを可能とする、一元的なメカニズムがあります。これらのベース・リソースURIは、名前空間http://xmlns.oracle.com/adf/rewrite/configの下の、アプリケーションのadf-config.xmlファイルの中にあり、リソースをホストしているサーバーを指すようにするためのURIの書換えを可能にしています。URI書換えの詳細は、A.4.4項「コンテンツ配信ネットワークの使用」を参照してください。

ほとんどのコンポーネントは、アタッチメント・モードでの何らかのサポートがありますが、アタッチメント・モードでは最適な動作をしない可能性のあるコンポーネントや、サポートされないコンポーネントが少数あります。たとえば、階層ビューアはアタッチメント・モードがサポートされないことを示すメッセージを表示します。また、カレンダ表示の切り替えなど、アタッチメント・モードのすべての機能はサポートしないコンポーネントもあります。サポートされるコンポーネントと制約の詳細は、タグのドキュメントを参照してください。

35.4.1 アタッチメント・ページの作成方法

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

org.apache.myfaces.trinidad.outputMode=attachment

たとえば、図35-5に示すように、アクティブなレポートを表示するページがあるとします。

図35-5 アクティブなレポートのWebページ

注文書のWebページ

actionListener メソッドや他のサービスを使用して、リクエスト・パラメータ org.apache.myfaces.trinidad.outputMode=attachment を現在のURLに追加します。これはアタッチメント・ページをレンダリングし、受信者に送信するためのメールへの添付を可能にします。このページを保存してメールに添付するメカニズムはADFにより提供されず、ユーザーによる実装が必要です。アタッチメント・ページはそのリソースURlが書き換えられ、そのページに参照される補助的リソース(スタイルシート、イメージ、およびJavaScriptライブラリ)をホストしているサーバーを指していることを確認してください。URI書換えの使用についての情報は、A.4.4項「コンテンツ配信ネットワークの使用」を参照し、Oracleホスト・リソースでのURI書換え方法の例については、35.4.2項「Oracleホスト・リソースの使い方」を参照してください。


注意:

アタッチメント・ページで使用されるリソースは、アタッチメント・ページが適切に表示されるよう、一般にアクセス可能な位置で利用可能となっていることを確認します。Oracleホスト・リソースを使用する場合、35.4.2項「Oracleホスト・リソースの使い方」を参照してください。


図35-6は、Webブラウザで開いた時のメールのアタッチメント・ページを示します。

図35-6 Webブラウザでのアクティブ・レポート・メール・アタッチメント・ページ

注文書のWebページ

注意:

DVTグラフを含むアタッチメント・ページが、IE7やIE8などの非HTML 5ブラウザで開かれる場合、PNGイメージのレンダリングのためにサーブレットへのアクセスが必要です。このサーブレットが利用できない場合は、グラフはレンダリングされません。


35.4.2 Oracleホスト・リソースの使い方

ユーザーにとり便利なように、Oracleはアタッチメント・モードのサポート提供に必要な補助リソースをホストします。このリソースには、JavaScriptライブラリ、CSS、および静的なイメージが含まれます。http://download.oracle.com/otn-pub/jdeveloper/faces/versionにあるOracleの一般向けサーバーにホストされているコンテンツが使用できます。


注意:

Oracleは、その一般向けのサーバーやその中のコンテンツが、どの時点でもアクセス可能であることや利用可能であることを、保証したり、いかなる表明の対象とするものではありません。OracleのサーバーにあるOracle ADFリソースは、Oracleアプリケーション開発フレームワークの使用のためにユーザーが合意したオリジナルのライセンスが適用されます。


Oracleがホストするリソースを使用する場合は、ユーザーのアプリケーションがdownload.oracle.com上にあるベース・リソースURIを指定するように構成し、すべてのリソースURIが書き換えられてURIの接頭辞を含むようにする必要があります。URI書換えの使用の詳細は、A.4.4項「コンテンツ配信ネットワークの使用」を参照してください。

Oracleホスト・リソースを使用するには:

  1. adf-config.xmlファイルを作成または開いて下さい(詳細は、A.4項「adf-config.xmlにおける構成」を参照)。

  2. A.4.4項「CDN URIリライト要素」に記述されている要素を使用して、置換URIを定義するためのリライト・ルールを作成します。

    • 次の形式を使用して、download.oracle.com上の正しい場所用の接頭辞を指定します。

      http://download.oracle.com/otn-pub/jdeveloper/faces/version
      
    • アタッチメント・ページ(JavaScript、CSS、およびイメージ)で使用されるすべてのリソースとの一致のため、<match-pattern>要素を使用して正規表現を指定します。

    例35-1は、download.oracle.comを補助リソースのために使用する、アプリケーションの構成方法を示します。サンプル・コードは、すべてのADFおよびDVTが生成したJavaScriptライブラリ、イメージ、およびスタイルシートは、次の接頭辞を含むように書き換えられることを指定しています。

    http://download.oracle.com/otn-pub/jdeveloper/faces/11.1.1.7.0/
    

    例 35-1 Oracleホスト・リソースのためのURIリライト

    <adf-uri-rewrite-config xmlns="http://xmlns.oracle.com/adf/rewrite/config">
        <resource-uris>
          <base-resource-uri uri="http://download.oracle.com/otn-pub/jdeveloper/faces/11.1.1.7.0/">
            <match-alias>af:documents</match-alias>
            <match-alias>af:coreScripts</match-alias>
            <match-alias>af:images</match-alias>
            <match-alias>af:skins</match-alias>
     
            <!-- Non core ADF and Trinidad JS Libraries -->
            <match-pattern>^.*/afr/partition.*\.js$</match-pattern> <!-- rcf js files -->
            <match-pattern>^.*/adf/jsLibs/.*\.js$</match-pattern> <!-- trinidad js -->
     
            <!-- Locale Translations JS Files -->
            <!-- rcf js locale files -->
            <match-pattern>^.*/afr/.*\.js[?].*$</match-pattern>
            <!-- trinidad js locale -->
            <match-pattern>^.*/adf/jsLibs/resources/.*\.js[?].*$</match-pattern>
     
            <!-- dvt images -->
            <match-pattern>^/[^/]+/(bi)/.*\.(png|gif|jpg|jpeg|cur|iso)$</match-pattern>
     
          </base-resource-uri>
        </resource-uris>
      </adf-uri-rewrite-config>
    
    

35.4.3実行時に何が起こるか:ADF FacesがどのようにJSFページをアタッチメント・ページに変換するか

ADF Facesフレームワークがパラメータorg.apache.myfaces.trinidad.outputMode=attachmentでリクエストを受け取ると、フレームワークはレスポンスのレンダリング・フェーズで以下を行います。

  • ブラウザ・エージェントをgenericDesktopにセットします(これは、アタッチメント・ページを生成するようにリクエストしたエージェントを使用していません)。

  • リッチ・ページがオフラインで機能するのに必要な、すべてのJavaScriptリソースを含みます。

  • genericDesktopエージェントのためにCSSを生成し、レンダリングされたページのためこのリソースへのリンクを含みます。

  • リソースにおけるすべての相対リンクを絶対リンクに変換し、CSSコンテンツを含みます。

  • 絶対URLでイメージをレンダリングします。アタッチメント・ページが開かれると、ブラウザ・クライアントによりダウンロードされなかったどのイメージも、フレームワークによりプリロードされます。