showPrintablePageBehavior
タグを使用してページを印刷する方法および要求パラメータorg.apache.myfaces.trinidad.agent.email=true
を使用して電子メール送信可能なページを作成する方法が含まれます。
この章の内容は次のとおりです。
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()
を使用して確認できます。
大分部の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 メール・クライアントのページ
ADFアプリケーションのユーザーがWebページを印刷するとき、Webページに表示されているADF Facesコンポーネントを印刷するかどうかを指定できます。
ADF Facesフレームワークを使用すると、showPrintablePageBehavior
タグをコマンド・コンポーネントの子として置く場合に、印刷に適したバージョンのページを印刷できます。クリックすると、フレームワークは、printableBehavior
タグに対する親のコンポーネントから始まるコンポーネント・ツリーを、panelSplitter
、panelAccordion
またはpopup
コンポーネント、あるいはツリーのルート(いずれか早い方)に到達するまで上っていきます。ツリーはそこからレンダリングされます。さらに、印刷ページで不要なコンポーネント(ボタン、スクロール・バーなど)は省略されます。
コマンド・コンポーネントがクリックされると、アクション・イベントは取り消されます。かわりに、サーバーに対して、ページの印刷可能なバージョンが要求されます。
showPrintablePageBehavior
タグは、コマンド・コンポーネントの直接の子として使用されます。
始める前に:
コンポーネントが印刷送信可能なページでどのように表示されるかについて理解しておくと役立ちます。詳細は、「印刷用のページの表示」を参照してください。
showPrintablePageBehaviorタグを使用する手順:
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_MODE
をinternal
またはinline
のいずれかに設定し、この動作を構成できます。
電子メールで送信されるページのURLにリクエスト・パラメータに追加することにより、ADF Facesフレームワークに対して、ページを電子メール・クライアントでレンダリングするために変換することを通知します。
始める前に:
コンポーネントが電子メール送信可能なページでどのように表示されるかについて理解しておくと役立ちます。詳細は、「電子メール送信可能なページの作成」を参照してください。
電子メール送信可能なページを作成する手順:
ページの開発を完了する前に、電子メール・クライアントでページがどのようにレンダリングされるかをテストすることもできます。これはButton
コンポーネントを使用すれば簡単にできます。
電子メール送信可能なページをテストする手順:
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