WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...-...

63
B1WD-3103-01Z0(00) Interstage XWand V12 WebForm 開発ガイド Java インタフェース(XBRL 2.1)

Transcript of WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...-...

Page 1: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

B1WD-3103-01Z0(00)

Interstage XWand V12

WebForm 開発ガイド

Java インタフェース(XBRL 2.1)

Page 2: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

ii

まえがき

本マニュアルの目的

本マニュアルは、Interstage XWand WebForm(以降”WebForm”と記述)サンプルプログラム

を用いて、WebForm で使用する Interstage XWand HTMLForm プロセッサおよび Interstage

Xwand RenderingLink プロセッサの概要、機能、および使用方法について説明しています。

本マニュアルの読者

本マニュアルは、WebForm ライブラリを利用したアプリケーションの開発者の方を対象とし

ています。

本マニュアルの読者は、XBRL 2.1 仕様および FRIS 仕様を理解していることを前提とします。

関連マニュアル

- XBRL プロセッサ XBRL 2.1 Java インターフェース API リファレンス(以降、“XBRL API リフ

ァレンス”と記述します)

- Dimension プロセッサ XBRL 2.1 Java インターフェース API リファレンス(以降、“Dimension

API リファレンス”と記述します)

- Formula プロセッサ XBRL 2.1 Java インターフェース API リファレンス(以降、“Formula API

リファレンス”と記述します)

輸出規制について

本製品は日本での使用が原則です。お客様のご都合により本ソフトウェアを日本国外へ輸

出等することにより持ち出す必要がある場合は、「外国為替および外国貿易法」に基づき経

済産業省の許可が必要となります。なお、お客様が、本ソフトウェアを日本国外へ持ち出

し、使用された場合に、日本および当該国の法令等に違反していることで政府または第三

者より何らかの請求または訴えの提訴を受け、お客様が何らかの支障や損害を被っても、

弊社は一切責任を負いません。また、お客様が本項に違反することにより弊社が損害を被

った場合、お客様にその賠償を請求する場合があります。

商標について

- XBRL は、XBRL International, Inc.の米国およびその他の国における登録商標です。

- Oracle と Java は、Oracle Corporation およびその子会社、関連会社の米国およびその他の

国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があ

ります。

- Microsoft、Windows は、Microsoft Corporation の米国およびその他の国における登録商標

です。

- その他一般に、会社名、製品名は各社の商標または登録商標です。

Page 3: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

iii

注意事項

- このマニュアルは、予告なしに変更されることがあります。

- このマニュアルを無断で他に転用しないようお願いします。

- このマニュアルに記載されたデータの使用に起因する第三者の特許権およびその他の権利の

侵害については、当社はその責を負いません。

発行年月日

2011 年 12 月 初版

Page 4: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

iv

目 次

第 1 章 概要 ...................................................................... 1

1.1 目的 ....................................................................... 2

1.2 使用する API と機能範囲 ..................................................... 3

1.3 外部ライブラリとリソースの関係図 ........................................... 4

第 2 章 システム構成 .............................................................. 5

2.1 動作環境 ................................................................... 6

2.2 TOMCATへの配置 ............................................................. 7

2.3 INTERSTAGE APPLICATION SERVERへの配置 ........................................... 9

第 3 章 フォルダ構成 ............................................................. 17

3.1 フォルダ構成 .............................................................. 18

第 4 章 サンプルプログラムの画面 ................................................. 20

4.1 画面構成 .................................................................. 21

4.2 目次画面 .................................................................. 22

4.3 参照画面 .................................................................. 23

4.4 入力フォーム画面 .......................................................... 24

4.5 エラーダイアログ .......................................................... 25

4.6 XBRL 文書画面 ............................................................. 26

第 5 章 サンプルプログラムの処理の流れ ........................................... 27

5.1 処理の流れ ................................................................ 28

第 6 章 インスタンスの画面表示 ................................................... 29

6.1 概要 ...................................................................... 30

6.2 レンダリング結果モデルの作成 .............................................. 31

6.3 ブラウザに表示する HTML データの作成 ....................................... 32

6.4 サンプルプログラムの説明 .................................................. 33

6.4.1 画面表示に必要なオブジェクトの作成(index.jsp / HTMLFormStartServlet.java) 33

6.4.2 レンダリング結果モデルの作成 (HTMLFormCreateServlet.java) ............... 34

6.4.3 HTML の作成 (HTMLFormCreateServlet.java) ............................... 34

6.4.4 作成した HTML の画面表示 (HTMLFormCreateServlet.java) ................... 36

6.4.5 エラー内容の表示 ....................................................... 36

第 7 章 入力値の更新 ............................................................. 39

7.1 概要 ...................................................................... 40

7.2 入力された値をインスタンスへ反映 .......................................... 41

7.3 サンプルプログラムの説明 .................................................. 43

7.3.1 更新処理に必要なオブジェクトおよびプロセッサの準備

(HTMLFormUpdateServlet.java) ...................................................... 43

7.3.2 入力値(パラメータ)の取得 (HTMLFormUpdateServlet.java) ................ 43

Page 5: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

v

7.3.3 HTMLForm プロセッサを用いてインスタンス内容の更新

(HTMLFormUpdateServlet.java) ...................................................... 44

7.3.4 更新後インスタンスの保存 (HTMLFormUpdateServlet.java) .................. 45

7.3.5 更新後インスタンスの画面表示 (HTMLFormUpdateServlet.java) .............. 45

第 8 章 インスタンスの評価 ....................................................... 46

8.1 概要 ...................................................................... 47

8.2 FORMULAプロセッサでのインスタンスの評価 .................................... 48

8.3 FORMULAプロセッサでの評価結果の取得 ........................................ 50

8.4 サンプルプログラムの説明 .................................................. 51

8.4.1 評価に必要なプロセッサとインスタンスの準備 (HTMLFormUpdateServlet.java#

service メソッド) .................................................................. 51

8.4.2 FormulaLinkResultHandler の実装

(FormulaLinkResultHandlerImpl.java/FormulaLinkAssertionResultInfo.java) ............ 51

8.4.3 インスタンスの評価の実行 (HTMLFormUpdateServlet.java# validate メソッド) 54

8.4.4 インスタンスの評価結果と評価エラーの表示 ............................... 54

第 9 章 補足 ..................................................................... 56

9.1 XBRL プロセッサオブジェクト作成時の注意 .................................... 57

Page 6: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。
Page 7: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 1章 概要

1

第1章 概要

Page 8: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 1章 概要

2

1.1 目的

Interstage XWand HTMLForm プロセッサや Interstage XWand RenderingLink プロセッサの外

部ライブラリを利用すると、タクソノミで定義されている項目とインスタンスデータの繋がり

を視覚的に分かりやすい形式に編集することができ、複数人が、Web ブラウザ上で、インスタン

スの参照、編集、評価を行うアプリケーションを作成することができます。

また、サンプルプログラムでは、上記を実現する API を使用して、Web ブラウザ上で、インス

タンスの参照、編集、評価を行います。

Page 9: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 1章 概要

3

1.2 使用するAPIと機能範囲

当サンプルプログラムは、Interstage XWand の以下の API を使用しています。

Interstage XWand WebForm で使用する Interstage XWand HTMLForm プロセッサおよび

Interstage XWand RenderingLink プロセッサは、Interstage XWand XBRL プロセッサと共に使

用されます。

また、サンプルプログラムでは入力値の評価用に Interstage XWand Formula プロセッサを使

用しています。各プロセッサは以下の図のように関連しています。

表 1.1 外部ライブラリの説明

外部ライブラリ 説明

Interstage XWand HTMLForm プロセッ

・Web ブラウザ上でインスタンスを参照、編集する HTML データの作

・インスタンスの更新

Interstage XWand RenderingLink プロ

セッサ

・タクソノミとインスタンスを視覚的に分かりやすい形式に編集した

レンダリング結果モデルの作成

Interstage XWand Formula プロセッサ ・Formula の定義に従ったインスタンスの評価

Interstage XWand XBRL プロセッサ ・インスタンスの作成、XBRL の定義に従ったインスタンスの評価

・インスタンスファイルの保存

Interstage XWand Formula

プロセッサ

Interstage XWand XBRL プロセッサ

Interstage XWand HTMLForm

プロセッサ

Interstage XWand RenderingLink

プロセッサ

図 1-1 使用する API の構成

Page 10: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 1章 概要

4

1.3 外部ライブラリとリソースの関係図

外部ライブラリとリソースは、以下のような関係で動作します。

使用する用語については、以下の通りです。

表 1.2 使用する用語の説明

用語 説明

レンダリングリンクファイ

タクソノミとインスタンスを視覚的に分かりやすい形式に定義

⇒RenderingLink プロセッサが作成したものがレンダリング結果モデル

HTML データ テンプレート HTML ファイル内の form タグに、HTML 形式に変換したレン

ダリング結果モデルを挿入した HTML 文書

テンプレート HTML ファイル 参照、入力フォーム画面の雛型となる HTML 文書を定義した XML ファイル

input データ output データ

レンダリング

リンクファイル

テンプレート

HTML

ファイル

タクソノミー

ファイル

インスタンス

ファイル

インスタンス

(レンダリング結果モデル)

(インスタンス)

HTML

データ

Interstage

XWand XBRL

プロセッサ

Interstage

XWand Formula

プロセッサ

Interstage

XWand

Rendering

Link

プロセッサ

Interstage

XWand HTML

Form

プロセッサ

図 1-2 外部ライブラリとリソースの関係図

Page 11: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 2章 システム構成

5

第2章 システム構成

Page 12: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 1部第 2章 システム構成

6

2.1 動作環境

Interstage XWand WebForm を使用する場合、以下のいずれかのソフトウェアが必要です。

・Eclipse 3.6 以降(JDK1.5 以上)

・Interstage Studio Standard-J Edition V10

また、以下のアプリケーションサーバでの動作を確認しております。

・Tomcat 5.5.33

・Interstage Application Server V10.0.0

当ドキュメントでは、各アプリケーションサーバが既にインストール済みであることを前提と

して説明をしております。アプリケーションサーバのインストールにつきましては各製品マニ

ュアルを参照してください。

Page 13: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 2章 システム構成

7

2.2 Tomcatへの配置

当サンプルプログラムを Tomcat 上で動作させる場合、以下の通りに Tomcat の設定をしてくだ

さい。

① サンプルプロジェクトファイルを Tomcat インストール配下の webapps フォルダに配置

② Interstage XWand Application Developer をセットアップしたフォルダから以下の XBRL2.1

プロセッサの Java ライブラリを WEB-INF\lib フォルダにコピー。

formulaproc.jar

xbrl-function.jar

xbrldimensions.jar

xmlpath2.jar

xmlpath2fn.jar

xmlpro.jar

xmlschema.jar

xmlschemac.jar

xmltrans.jar

xmltransx.jar

xwand-common.jar

xwand.jar

xwandlink.jar

xwandschema.jar

xwand_xpath2.jar

③ Tomcat インストール配下の conf\server.xml の<Host>タグに以下の一行を追記

使用するタグ、属性については、以下の通りです。

表 2.1 server.xml に追記するタグや属性の説明

タグ/属性 説明

Context Tomcat で動作する Web アプリケーション単位のコンテキスト設定

path ブラウザで参照する仮想ディレクトリ名

reloadable サーブレットのクラスファイルを更新した場合の Tomcat の再起動設定

true=有効、属性なし/false=無効

docBase Web アプリケーションファイルを配置したフォルダ名

workDir Tomcat が一時的に利用するフォルダ名

<Context path="/<サンプルプロジェクトのコンテキスト名>" reloadable="true"

docBase="<Tomcat のインストールパス>\webapps\<サンプルプロジェクトのフォルダ名>"

workDir="<Tomcat のインストールパス> \webapps\<サンプルプロジェクトのフォルダ名

>\work" />

Page 14: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 1部第 2章 システム構成

8

④ ブラウザ上で以下にアクセス

http://localhost:<ポート番号>/<③で追記したサンプルプロジェクトのコンテキスト

名>

Page 15: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 2章 システム構成

9

2.3 Interstage Application Serverへの配置

当サンプルプログラムを Interstage Application Server 上で動かすには、Interstage Studio

Standard-J Edition V10(以下 Interstage Studio)上でサンプルプログラムの WAR ファイルを

作成し、Interstage Application Server へデプロイします。

サンプルプログラムのインポート

Interstage Studio にサンプルプログラムをインポートする方法を例示します。

① WebForm 用の「動的 Web プロジェクト」を作成します。

以下の内容を入力し、「次へ」ボタンをクリックします。

・プロジェクト名:WebFrom_Sample

・プロジェクトコンテンツ:デフォルトを使用

・ターゲットランタイム:Interstage Application Server V10.0 IJServer (J2EE)

・動的 Web モジュールバージョン:2.4

・構成:Interstage Application Server V10.0 IJServer (J2EE)デフォルト構成

・EAR メンバーシップ:(チェックなし)

図 2-1 新規プロジェクト作成(動的 Web プロジェクト)

② 「Web モジュール」の画面にてコンテキストルート/コンテンツフォルダ/Java ソースフォル

ダを以下の通り入力し、「完了」ボタンをクリックします。

・コンテキストルート:WebFrom_Sample

・コンテンツフォルダ:WebContent

・Java ソースフォルダ:src

Page 16: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 1部第 2章 システム構成

10

図 2-2 新規プロジェクト作成(Web モジュール)

③ 作成したプロジェクトに対してサンプルプログラムをインポートします。

サンプルフォルダ内にある各ファイルを作成したプロジェクトの WebContent フォルダへイ

ンポートします。インポートするフォルダとファイルは以下のものです。

・data フォルダ

・WEB-INF フォルダ

・work フォルダ

・index.jsp

[注意]data フォルダをインポート時に、data_work フォルダがインポートされない時があり

ます。data_work がインポートされない場合は、プロジェクトエクスプローラから

「WebContent/data」フォルダの下に「data_work」フォルダを作成してください。

「data_work」フォルダは実行時のワークフォルダとして機能するため data_work フォ

ルダ内にはファイルは存在しません。

Page 17: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 2章 システム構成

11

図 2-3 サンプルプログラムのインポート

④ WEB-INF フォルダにあります「src」フォルダの内容を作成したプロジェクトの「src」フォ

ルダへインポートします。

図 2-4 プログラムファイルのインポート

Page 18: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 1部第 2章 システム構成

12

⑤ Interstage XWand Application Developer をセットアップしたフォルダから以下の XBRL2.1

プロセッサの Java ライブラリをプロジェクトの「WebContent/WEB-INF/lib」フォルダにイ

ンポートします。

formulaproc.jar

xbrl-function.jar

xbrldimensions.jar

xmlpath2.jar

xmlpath2fn.jar

xmlpro.jar

xmlschema.jar

xmlschemac.jar

xmltrans.jar

xmltransx.jar

xwand-common.jar

xwand.jar

xwandlink.jar

xwandschema.jar

xwand_xpath2.jar

図 2-5 XBRL2.1 ライブラリのインポート

WARファイルの作成

Interstage Studio による WAR ファイルの作成方法を以下に例示します。

① プロジェクトの右クリックメニューから「エクスポート」→「WAR ファイル」をクリックし

ます。

Page 19: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 2章 システム構成

13

② エクポートダイアログに以下の情報を入力し、完了ボタンをクリックします。

・Web モジュール:WebFrom_Sample

・宛先:[WAR ファイルの保存先フォルダ名]\ WebFrom_Sample.war

・ターゲットランタイム:Interstage Application Server V10.0 IJServer(J2EE)

図 2-6 WAR ファイルのエクスポート

③ 上記の「宛先」で指定された場所に WAR ファイルが作成されています。

Interstage Application Serverへの配置

上記で作成した WAR ファイルを Interstage Application Server へデプロイします。

① Web ブラウザにて、「Interstage Java EE 管理コンソール」へアクセスしログインします。

② ログイン後、「共通操作」の画面から「Web アプリケーション(.war)を配備」をクリック

します。

Page 20: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 1部第 2章 システム構成

14

図 2-7 共通操作画面

③ 「エンタープライズアプリケーション/モジュールを配備」の画面が表示されますので、以

下の内容を登録し「了解」ボタンをクリックします。

表 2.2 「エンタープライズアプリケーション/モジュールを配備」登録内容

設定項目 設定内容

タイプ Web アプリケーション(.war)

場所 「サーバにアップロードされるパッケージファイル」

を選択し、WAR ファイルを指定

アプリケーション名 「場所」の項目で WAR ファイルを選択時に自動入力された値

コンテキストルート 「場所」の項目で WAR ファイルを選択時に自動入力された値

状態 有効にチェックあり

ベリファイアを実行 有効にチェックなし

JSP をプリコンパイル 有効にチェックなし

ライブラリ (空欄)

説明 (空欄)

ターゲット 実行するサーバを選択

Page 21: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 2章 システム構成

15

図 2-8 「エンタープライズアプリケーション/モジュールを配備」登録画面 1

図 2-9 「エンタープライズアプリケーション/モジュールを配備」登録画面 2

④ デプロイが完了すると「web アプリケーションが配備されました」と表示され、「Web アプ

リケーション」の一覧に登録したアプリケーションが表示されます。

Page 22: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 1部第 2章 システム構成

16

図 2-10 配備完了画面(Web アプリケーション画面)

⑤ Web ブラウザを新たに起動して以下の URL を入力し、サンプルプログラムが表示されるこ

とを確認します。

http://<サーバ名>:<ポート番号>/<コンテキストルート>/index.jsp

※ポート番号は③で指定したターゲットのサーバ情報から参照してください。

図 2-11 Interstage Application Server 上へアクセスした画面

Page 23: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 3 章 フォルダ構成

17

第3章 フォルダ構成

Page 24: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 3章 フォルダ構成

18

3.1 フォルダ構成

当サンプルプログラムを実行する際には、以下のフォルダ構成が必要になります。Tomcat へ

の配置、および WAR ファイルを作成する際には、下記のフォルダ構成で WAR ファイルを作成し

てください。

※data フォルダ配下はサンプルプログラムで使用するファイルが配置されています。サンプ

ルプログラムでは、固定で data フォルダ配下を参照するため、サンプルプログラムを使用する

場合は、フォルダ名を変更しないで下さい。

※XBRL2.1 プロセッサのライブラリはサンプルフォルダに同胞されていません。Interstage

XWand Application Developer をセットアップしたフォルダからコピーしてください。

図 3-1 フォルダ構成図

WebFrom_Sample

│ index.jsp

├─data

│ ├─data_work …作業用(出力用)フォルダ

│ ├─formula …Formula バリデーションタクソノミファイルフォルダ

│ │ assertion-formula.xml

│ │ assertion.xsd

│ │ role-validationmessage.xsd

│ ├─ins …処理対象インスタンスファイルフォルダ

│ │ └─Sample

│ │ instance-value.xml

│ │ instance.xml

│ ├─ren …レンダリングタクソノミファイルフォルダ

| | rendering-linkbase_fj.xsd

| | rendering-roles_fj.xsd

│ │ Sample_mod-rendering.xml

│ │ Sample_mod-rendering.xsd

│ │ Sample_mod-rendering_view.xml

│ │ Sample_mod-rendering_view.xsd

│ ├─tax …基本タクソノミファイルフォルダ

│ │ └─Sample

│ │ dimension-sample-definition.xml

│ │ dimension-sample-label.xml

│ │ dimension-sample.xsd

│ └─template_html …テンプレート HTML ファイルフォルダ

│ template_html.xml

│ template_html_view.xml

├─WEB-INF

│ web.xml

├─classes

├─lib … ライブラリフォルダ

│ rendering-std.jar … Interstage XWand RenderingLink プロセッサ本体

│ xwandhtmlform.jar … Interstage XWand HTMLForm プロセッサ本体

│ formulaproc.jar … Interstage XWand XBRL2.1 プロセッサ一式

│ xbrl-function.jar

│ xbrldimensions.jar

│ xmlpath2.jar

│ xmlpath2fn.jar

Page 25: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 3 章 フォルダ構成

19

│ xmlpro.jar

│ xmlschema.jar

│ xmlschemac.jar

│ xmltrans.jar

│ xmltransx.jar

│ xwand-common.jar

│ xwand.jar

│ xwandlink.jar

│ xwandschema.jar

│ xwand_xpath2.jar

└─src … プログラムフォルダ

└─sampleApp

FormulaLinkAssertionResultInfo.java

FormulaLinkErrorHandlerImpl.java

FormulaLinkResultHandlerImpl.java

HTMLFormCreateServlet.java

HTMLFormStartServlet.java

HTMLFormUpdateServlet.java

SampleFormulaEntityResolver.java

SampleXBRLEntityResolver.java

SampleXBRLErrorHandler.java

Utilities.java

Page 26: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 4章 サンプルプログラムの画面

20

第4章 サンプルプログラムの画面

Page 27: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 4 章 サンプルプログラムの画面

21

4.1 画面構成

当サンプルプログラムが表示する画面は、以下の通りです。

目次画面

参照画面

入力フォーム画面

|-エラーダイアログ

XBRL 文書画面

Page 28: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 4章 サンプルプログラムの画面

22

4.2 目次画面

図 4-1 参照画面、入力フォーム画面を選択する画面

表 4.1 画面項目の説明

番号 項目 説明

① インスタンスの表示リ

ンク

クリックすると、参照画面を別画面で表示

② インスタンスの編集リ

ンク

クリックすると、入力フォーム画面を別画面で表示

注)「インスタンスの表示」と「インスタンスの編集」が対象としている XBRL インス

タンスは別であるため、「インスタンスの編集」の結果を「インスタンスの表示」で

確認することはできません。

① ②

Page 29: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 4 章 サンプルプログラムの画面

23

4.3 参照画面

図 4-2 インスタンスを表示する画面

表 4.2 画面項目の説明

番号 項目 説明

① 表 読み込んだインスタンスをレンダリンク結果モデルの定義で表示

Page 30: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 4章 サンプルプログラムの画面

24

4.4 入力フォーム画面

図 4-3 インスタンスを編集する画面

表 4.3 画面項目の説明

番号 項目 説明

① 保存ボタン クリックすると、XBRL や Formula の定義に従って評価を行い、インス

タンスを更新、インスタンスファイルを保存

⇒評価でエラーがある場合は、エラーダイアログ画面に遷移

② XBRL インスタンス表示

リンク

クリックすると、XBRL 文書画面を別画面で表示

③ 表 読み込んだインスタンスをレンダリンク結果モデルの定義で表示

④ 入力フォーム XBRL 文書の内容を入力

① ②

③ ④

Page 31: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 4 章 サンプルプログラムの画面

25

4.5 エラーダイアログ

図 4-4 XBRL や Formula の定義での評価でエラーとなった内容を表示する画面

(Formula の定義の詳細につきましては「第 8章 インスタンスの評価」を参照してください)

表 4.4 画面項目の説明

番号 項目 説明

① エラーダイアログ 評価でエラーとなった内容を表示

② OK ボタン クリックすると、エラーダイアログを閉じる

③ 入力フォーム 評価でエラーとなった箇所の背景をピンクで色づけ

Page 32: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 4章 サンプルプログラムの画面

26

4.6 XBRL文書画面

図 4-5 XBRL 文書を XML ファイル形式のまま表示する画面

Page 33: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 5 章 サンプルプログラムの処理の流れ

27

第5章 サンプルプログラムの処理の流れ

Page 34: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 5章 サンプルプログラムの処理の流れ

28

5.1 処理の流れ

当サンプルプログラムの処理の流れは以下の通りとなります。

[参照時の流れ]

(1) ブラウザから目次画面(index.jsp)にアクセスします。

(2) 目次画面から画面に表示する内容(インスタンス/レンダリングスキーマ/バリデーショ

ンスキーマ/テンプレート HTML ファイル)を選択します。(※)

(3) 画面に表示するインスタンスファイルの読み込みや、各種プロセッサを作成します。

(4) HTMLFormCreateServlet へ遷移します。

(5) (3)で準備されたインスタンスと各種プロセッサを使用してインスタンスの内容を画面に

表示します。

[更新時の流れ]

(1)’ ブラウザ上から「save」ボタンをクリックすると、HTMLFormUpdateServlet へ遷移します。

(2)’ ブラウザ上で入力された値でインスタンスを更新します。このとき、入力チェックと入

力内容の妥当性チェックを行います。

(3)’ (2)’の入力チェックおよび入力内容の妥当性チェックで問題がなければ更新後のインス

タンスの内容をファイルに保存します。

(4)’ HTMLFormCreateServlet へ遷移します。

(5)’ 更新後のインスタンスの内容を画面に表示します。このとき、(3)’でエラーが発生した

場合はエラーの内容を表示します。

※参照画面と入力フォームの切り替え

参照画面と入力フォームの切り替えを行う際には、レンダリングスキーマファイルとテンプ

レート HTML ファイルをそれぞれ準備することによって実現できます。

Application Server index.jsp (目次画面)

HTMLFormStartServlet.java (画面表示の準備)

HTMLFormCreateServlet.java (画面表示)

HTMLFormUpdateServlet.java (更新処理/妥当性の評価)

インスタンス

(1)

(2)(3)

(4)(5)

(1)’ (2)’ (3)’

(4)’

ブラウザ (目次)

ブラウザ (入力フォーム)

参照時の流れ

更新時の流れ

(5)’

図 5-1 サンプルプログラムの処理の流れ

Page 35: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 6章 インスタンスの画面表示

29

第6章 インスタンスの画面表示

Page 36: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 6章 インスタンスの画面表示

30

6.1 概要

インスタンスの内容をブラウザ上に表示するには、HTMLForm プロセッサを用いてブラウザ上

に表示する HTML データを作成します。

ブラウザに表示する HTML データは、RenderingLink プロセッサから生成されたレンダリング

結果モデルと、表示する HTML のベースとなるテンプレート HTML ファイルから作成されます。

Page 37: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 6章 インスタンスの画面表示

31

6.2 レンダリング結果モデルの作成

HTMLForm プロセッサを用いて HTML データを出力するためのレンダリング結果モデル

(XBRLStaticRenderingModel)を作成します。

レンダリング結果モデルは、レンダリングリンクを含むタクソノミファイルとインスタンスフ

ァイルから作成されます。

作成されたレンダリング結果モデルは、次節の HTML データを表示する際の差し込みデータと

して使用されます。

以下、レンダリングリンクを含むタクソノミファイルと接続するインスタンスファイルからレ

ンダリング結果モデルを作成する例を示します。

// レンダリングモデルのファクトリを作成

XBRLRenderingModelFactory rmf = new XBRLRenderingModelFactory();

// XBRL プロセッサを作成し、Rendering Link の処理を有効にする

XBRLProcessor xbrlProc = new XBRLProcessor();

xbrlProc.setProperty("http://www.fujitsu.com/xml/xwand/process-generic-linkbase","yes");

// レンダリングリンクを含むタクソノミを取得

File renderingFile =

new File("/taxonomy/Folder/Path", "rendaringTaxonomyFile.xsd");

TaxonomySet renderingTaxSet =

xbrlProc.loadTaxonomySet(new StreamSource(renderingFile.getAbsolutePath()));

// レンダリング結果モデルに接続するインスタンスを取得

File instanceFile = new File("/instance/Folder/Path", "instanceFile.xml");

Instance ins = xbrlProc.loadInstance(new StreamSource(instanceFile.getAbsolutePath()));

// レンダリング結果モデルを作成

XBRLStaticRenderingModel rm = rmf.createStaticRenderingModel(ins, renderingTaxSet);

Page 38: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 6章 インスタンスの画面表示

32

6.3 ブラウザに表示するHTMLデータの作成

画面に表示する HTML データを、HTMLForm プロセッサを用いて作成します。

HTMLForm プロセッサに、前節で作成したレンダリング結果モデルとテンプレート HTML ファイ

ルを読み込んだオブジェクトをセットして HTML データを出力します。

レンダリング結果モデルの内容は、テンプレート HTML ファイルに記述された HTML 内から指定

された要素に追加されます。

以下の例では、前節で作成したレンダリング結果モデルを、テンプレート HTML ファイルに記

述された HTML の form 要素に差し込んだ HTML データを作成する方法です。

// HTMLForm プロセッサを生成。

// 引数には HTML に出力するレンダリング結果モデル(XBRLStaticRenderingModel)をセットする

HTMLFormProcessor formProc = new HTMLFormProcessor(rm);

// テンプレート HTML をロード

File templateHtmlFile = new File("/template/Folder/Path", "templateHTMLFile.xml");

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

dbf.setNamespaceAware(true);

DocumentBuilder db = dbf.newDocumentBuilder();

Document html = db.parse(templateHtmlFile);

// 追加する HTMLForm の親となる HTML 要素の取得

Element parentElem = (Element) html.getElementsByTagName("form").item(0);

// HTML データの作成処理(form 要素配下に、レンダリング結果モデルの内容を追加)

// レンダリング結果モデルから作成されるフォームデータは html オブジェクトに追加される

formProc.createHtmlForm(parentElem);

HTMLFormProcessor

XBRLStaticRenderingModel

<HTML>

:

<form>

</form>

:

</HTML> 差し込み先として

<form>を指定

HTML データの作成

<HTML>

:

<form>

[ XBRLStaticRenderingModel から

生成した HTML] </form>

:

図 6-1 HTML データの作成の流れ

Page 39: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 6章 インスタンスの画面表示

33

6.4 サンプルプログラムの説明

この節では、インスタンスファイルからブラウザで表示する HTML データを作成する流れをサ

ンプルプログラムで解説します。

サンプルプログラムでは以下の手順で HTML データを作成します。

1. 画面表示に必要なオブジェクトの作成

2. レンダリング結果モデルの作成

3. HTML の作成

4. 作成した HTML の画面表示

5. エラー内容の表示

6.4.1 画面表示に必要なオブジェクトの作成(index.jsp /

HTMLFormStartServlet.java)

この項では、画面表示を行うインスタンス等のオブジェクトやプロセッサの準備を行います。

画面に表示するインスタンスやレンダリングに使用するタクソノミファイル等は、index.jsp

から HTMLFormStartServlet に対して以下のパラメータをセットして GET します。

表 6.1 パラメータの説明

パラメータ名 説明

folderName [docBase]/data/ins フォルダ以下に配置されている、インスタンス

ファイルが格納されているフォルダ名

instanceFile [docBase]/data/ins/[folderName]フォルダに配置されている、画面

に表示するインスタンスファイル名

renderingTaxFile [docBase]/data/tax フォルダに配置されている、レンダリングに使

用するタクソノミファイル名

formulaTaxFile [docBase]/data/formula フォルダに配置されている、フォーミュラ

バリデーションで使用するタクソノミファイル名

templateHTMLFile [docBase]/data/template_html フォルダに配置されている、HTML

出力時のテンプレート HTML ファイル名

<index.jsp>

<a

href="./servlet/start?folderName=Sample&instanceFile=instance-value.xml&renderingTaxFile=Samp

le_mod-rendering.xsd&formulaTaxFile=assertion.xsd&templateHTMLFile=template_html.xml"

target="child">Edit Instance</a><br/>

HTMLFormStartServlet では、上記のパラメータ情報を取得して以下の各種オブジェクトおよ

びプロセッサを作成します。作成方法につきましては、HTMLFormStartServlet.java のソースを

参考にしてください。

- 表示対象のインスタンスオブジェクト

Page 40: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 6章 インスタンスの画面表示

34

- テンプレート HTML ファイルオブジェクト

- レンダリングに使用するタクソノミオブジェクト

- XBRL プロセッサ

- 妥当性評価を行う Formula プロセッサ

上記の各オブジェクトとプロセッサをセッションにセットし、HTMLFormCreateServlet へ遷移

します。

各オブジェクトおよびプロセッサとセッションの属性名は以下の通りです。

表 6.2 セッションの説明

セッションの内容 セッションの属性名

表示対象のインスタンスオブジェクト __ins

テンプレート HTML ファイルオブジェクト __template

レンダリングリンクを含むタクソノミセットオブジェクト __ren

XBRL プロセッサ __xbrlProc

妥当性評価を行う Formula プロセッサ __formulaProc

6.4.2 レ ン ダ リ ン グ 結 果 モ デ ル の 作 成

(HTMLFormCreateServlet.java)

この項では、表示する HTML へ差し込みを行うレンダリング結果モデルの作成を説明します。

レンダリング結果モデルの作成に必要な以下のオブジェクトをセッションから取得します。

- 表示対象のインスタンスオブジェクト

- レンダリングリンクを含むタクソノミセットオブジェクト

RenderingLink プロセッサを用いて、上記で取得したインスタンスオブジェクトとタクソノミ

セットオブジェクトからレンダリング結果モデル(XBRLStaticRenderingModel)を生成します。

// 処理対象のインスタンスの取得

Instance ins = (Instance) request.getSession().getAttribute("__ins");

// セッションからレンダリングリンクの TaxonomySet の取得

TaxonomySet renderingTaxSet = (TaxonomySet) request.getSession().getAttribute("__ren");

// レンダリングリンク結果モデルの生成

XBRLRenderingModelFactory rmf = new XBRLRenderingModelFactory();

XBRLStaticRenderingModel rm = rmf.createStaticRenderingModel(ins, renderingTaxSet);

6.4.3 HTMLの作成 (HTMLFormCreateServlet.java)

この項では、前項で作成したレンダリング結果モデルの内容を、HTMLForm プロセッサを使用

してテンプレート HTML ファイルに記述された HTML の form タグに追加する方法を説明します。

Page 41: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 6章 インスタンスの画面表示

35

HTML データの作成に必要な以下のオブジェクトをセッションから取得します。

- テンプレート HTML ファイルオブジェクト

前項で作成したレンダリング結果モデルの追加先となる from 要素のオブジェクトを、上記で

取得したテンプレート HTML ファイルオブジェクトから取得します。

// テンプレート HTML ファイルの取得

// セッションから取得 テンプレート HTML ファイルオブジェクト

File templateHtmlFile = (File) request.getSession().getAttribute("__template");

// テンプレート HTML ファイルの Document オブジェクトの生成

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

dbf.setNamespaceAware(true);

DocumentBuilder db = dbf.newDocumentBuilder();

Document html = db.parse(templateHtmlFile);

// 追加する HTMLForm の親となる HTML 要素の取得

Element parentElem = (Element) html.getElementsByTagName("form").item(0);

レンダリング結果モデルを引数として HTMLForm プロセッサを作成し、後の処理(詳細は「7.3.1

更新処理に必要なオブジェクトおよびプロセッサの準備」を参照)で使用するため、セッショ

ンの「__formProc」属性に格納します。

作成したHTMLFormプロセッサのcreateHtmlFormメソッドでレンダリング結果モデルの差し込

みを行います。

// HTMLForm プロセッサを生成

HTMLFormProcessor formProc = new HTMLFormProcessor(rm);

// セッションに HTMLForm プロセッサを格納

request.getSession().setAttribute("__formProc", formProc);

// HTML データの作成処理(form 要素配下に、レンダリング結果モデルの内容を追加)

// レンダリング結果モデルから作成されるフォームデータは html オブジェクトに追加される

formProc.createHtmlForm(parentElem);

(※ご参考)入力フォームの拡張

日付の入力時に、年/月/日と別の入力フォームにしたいなど、ユーザ独自に入力フォームを拡張する

ことができます。

入力フォームを拡張するには、HTMLForm プロセッサのクラス(DefaultHTMLFormCreaterHandler)を継

承して実装を行います。

public class HTMLFormCreaterHandlerExtends extends DefaultHTMLFormCreaterHandler {

public HTMLFormCreaterHandlerExtends() {

super();

}

public Element processFactField(Element parentHtmlElem,

FactField field,

Map parameters)

throws HTMLFormProcessorException {

}

Page 42: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 6章 インスタンスの画面表示

36

}

作成した拡張クラスは、HTMLForm プロセッサにセットします。

HTMLFormProcessor formProc = new HTMLFormProcessor(model);

formProc.setHTMLF rm reaterHandler(new HTMLFormCreaterHa dlerExtends());

6.4.4 作成したHTMLの画面表示 (HTMLFormCreateServlet.java)

この項では、前項までに作成した画面表示用の HTML データをブラウザに表示する方法を説明

します。

HTMLForm プロセッサの実行結果は、前項でテンプレート HTML ファイルオブジェクトから生成

した Document オブジェクトにセットされています。

ブラウザ画面に表示する HTML は、上記の Document オブジェクトから取得してブラウザ画面に

表示します。

// HTML の出力

TransformerFactory tf = TransformerFactory.newInstance();

Transformer t = tf.newTransformer();

// テンプレート HTML ファイルが UTF-8 で記述されているため、出力も合わせる

response.setContentType("text/html;charset=UTF-8");

// HTMLForm プロセッサで追加された html を画面に表示

t.transform(new DOMSource(html), new StreamResult(response.getWriter()));

6.4.5 エラー内容の表示

この項では、更新処理にてエラーが発生していた際に、エラーの内容を表示する方法を説明し

ます。

当サンプルプログラムでは、エラーの内容をダイアログで表示し、該当する入力フォームの背

景をピンクに変更します。

更新処理(HTMLFormUpdateServlet)でエラーが発生した場合、セッションの「__errors」属性

にエラー情報が格納されている HTMLFormDataException のリスト配列が格納されます。

__errors 属性に、画面に表示するエラーが存在している場合はエラー通知する処理を行いま

す。

// 更新処理からの例外の取得

HTMLFormDataException[] errors =

(HTMLFormDataException[])request.getAttribute("__errors");

if (errors == null || errors.length == 0) {

// 初回表示または、エラーがない場合

// HTMLForm の作成処理(要素配下に、HTMLForm を追加)

formProc.createHtmlForm(parentElem);

} else {

// 入力エラーがある場合

Page 43: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 6章 インスタンスの画面表示

37

// リクエストパラメータの取得

request.setCharacterEncoding("UTF-8");

Map parameters = request.getParameterMap();

// HTMLForm の作成処理(要素配下に、HTMLForm を追加)

// 入力エラーがある場合は、入力エラー状態を再現するために

// 引数でリクエストパラメータを渡す

formProc.createHtmlForm(parentElem, parameters);

// HTML にエラー情報を追加

addErrorInfo(html, errors);

}

エラーの内容を HTML データに追加する addErrorInfo メソッド内では、エラー情報が格納され

ている HTMLFormDataException からエラーメッセージと入力フィールド名を取得しています。

また、メッセージの表示とエラー項目の入力フィールドの背景色をピンクに変更し、フォーカ

スを移動する処理を追加しています。

/**

* instance 更新時のエラー情報を HTMLForm に反映します

* ・エラーが発生した入力フォームを赤く表示します

* ・エラーメッセージをダイアログに表示します

* @param html HTML の DOM オブジェクト

* @param errors instance 更新時のエラー情報

*/

void addErrorInfo(Document html, HTMLFormDataException[] errors) {

// body タグの取得

Element bodyElem = (Element)html.getElementsByTagName("body").item(0);

// form タグの 'name' 属性値を取得

String formName =

((Element)html.getElementsByTagName("form").item(0)).getAttribute("name");

// エラー処理のスクリプト

StringBuffer script = new StringBuffer();

// エラーとなった入力フィールドにフォーカス移動

if (errors.length > 0) {

HTMLFormDataException ex = (HTMLFormDataException)errors[0];

if (ex.getFieldNames().length > 0) {

script.append(formName);

script.append(".");

script.append(ex.getFieldNames()[0]); // 入力エラーとなったフィールド名を取得

script.append(".focus();");

}

}

// エラーとなった入力フィールドの背景色をピンクにする

// エラーメッセージの編集

StringBuffer message = new StringBuffer();

for (int i=0; i< errors.length; i++) {

HTMLFormDataException ex = (HTMLFormDataException)errors[i];

for (int j = 0, n = ex.getFieldNames().length; j < n; j++) {

script.append(formName);

script.append(".");

script.append(ex.getFieldNames()[j]); // 入力エラーとなったフィールド名を取得

Page 44: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 6章 インスタンスの画面表示

38

script.append(".style.background='pink';");

}

message.append("*");

message.append(i);

message.append("* : input error{");

message.append(ex.getMessage()); // エラーメッセージの取得

message.append("}\\n");

}

// エラーメッセージの表示

script.append("alert('");

script.append(jsEscape(message.toString()));

script.append("');");

// エラー処理のスクリプトを body タグの 'onload' イベントに設定

bodyElem.setAttribute("onload", script.toString());

}

Page 45: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 7章 入力値の更新

39

第7章 入力値の更新

Page 46: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 7章 入力値の更新

40

7.1 概要

画面上に入力された値をインスタンスに反映するには HTMLForm プロセッサの

updateHtmlForm メソッドを用いて行います。

Page 47: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 7章 入力値の更新

41

7.2 入力された値をインスタンスへ反映

前章で作成したHTML上で入力された値はHttpServletRequestクラスのgetParameterMapメソ

ッドで取得できます。

入力値をインスタンスに反映するためには、前章で作成した HTMLForm プロセッサを用いて更

新を行います。

HTMLForm プロセッサのupdateHtmlFormメソッドの引数にgetParameterMapメソッドで取得し

た Map オブジェクトをセットすることによりインスタンスの内容が更新されます。

このとき更新されるインスタンスは、HTMLForm プロセッサ作成時に引数として渡したレンダ

リング結果モデルに結び付けられたインスタンスになります。

updateHtmlForm メ ソ ッ ド で の イ ン ス タ ン ス 更 新 時 に エ ラ ー が 発 生 し た 場 合 、

HTMLFormUpdateInstanceException を発生します。

HTMLFormUpdateInstanceException には、入力例外となった情報(HTMLFormDataException)が

格納され、getUpdateErrors メソッドで取得できます。

以下の例では、前章で表示した HTML に対して入力した値をインスタンスに反映する方法を示

します。

入力パラメータ取得

a:test1 -> 1000

a:test2 -> 2000

<XBRL>

:

<a:test1 context=’..’> 100 </a:test1>

<a:test2 context=’..’> 200 </a:test2>

:

</XBRL>

HTMLForm プロセッサ

<XBRL>

:

<a:test1 context=’..’> 1000 </a:test1>

<a:test2 context=’..’> 2000 </a:test2>

:

</XBRL>

Test1

b

a 1000

Test2

2000

updateHtmlForm メソッド

a:test1 に該当する項目

を 100 から 1000 に変更

a:test2 に該当する項目

を 200 から 2000 に変更

インスタンス

インスタンス

ブラウザ

サンプルプログラムでは、レンダリングリンクに scale が 0 に設定

されているため、入力値がそのままセットされます。

図 7-1 インスタンス反映の処理の流れ

Page 48: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 7章 入力値の更新

42

HTML プロセッサを作成するまでの過程は前章の内容を参照してください。

protected void service(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// レンダリングリンクを含むタクソノミを取得

TaxonomySet renderingTaxSet = xbrlProc.loadTaxonomySet(...);

// レンダリング結果モデルに接続するインスタンスを取得

Instance ins = xbrlProc.loadInstance(...);

// レンダリング結果モデルを作成

XBRLStaticRenderingModel rm = rmf.createStaticRenderingModel(ins, renderingTaxSet);

// HTMLForm プロセッサを生成

HTMLFormProcessor formProc = this.createXBRLFormProcessor(rm);

// リクエストパラメータの取得

request.setCharacterEncoding("UTF-8");

Map parameters = request.getParameterMap();

try {

// 取得したパラメータでインスタンスを更新します。

formProc.updateHtmlForm(parameters);

} catch (HTMLFormUpdateInstanceException updateEx) {

// 入力例外の取得

HTMLFormDataException[] errors = updateEx.getUpdateErrors();

}

}

Page 49: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 7章 入力値の更新

43

7.3 サンプルプログラムの説明

この節では、画面に入力された内容でインスタンスを更新し、インスタンスファイルへの保存

と画面表示を行う流れをサンプルプログラムで解説します。

入力された値をインスタンスファイルとして保存する際には、以下の手順で行います。

1. 更新処理に必要なオブジェクトおよびプロセッサの準備

2. 入力値(パラメータ)の取得

3. HTMLForm プロセッサを用いて内容の更新

4. 更新後インスタンスの保存

5. 更新後インスタンスの画面表示

7.3.1 更新処理に必要なオブジェクトおよびプロセッサの準備

(HTMLFormUpdateServlet.java)

この項では、インスタンスの更新に必要なオブジェクトやプロセッサの準備を行います。

更新処理に必要な以下のオブジェクトとプロセッサをセッションから取得します。

- インスタンスオブジェクト

- XBRL プロセッサ

- HTMLForm プロセッサ

// 処理対象のインスタンスの取得

Instance ins = (Instance) request.getSession().getAttribute("__ins");

// XBRL プロセッサを取得

XBRLProcessor xbrlProc =

(XBRLProcessor) request.getSession().getAttribute("__xbrlProc");

// HTMLForm プロセッサを取得

HTMLFormProcessor formProc =

(HTMLFormProcessor) request.getSession().getAttribute("__formProc");

7.3.2 入 力 値 ( パ ラ メ ー タ ) の 取 得

(HTMLFormUpdateServlet.java)

この項では、画面上に入力された値の取得方法について説明します。

画面上で入力された内容は HttpServletRequest のパラメータとしてセットされ、

getParameterMap メソッドを用いて取得します。

// リクエストパラメータの取得

Page 50: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 7章 入力値の更新

44

// ブラウザでは UTF-8 の文字コードで表示

request.setCharacterEncoding("UTF-8");

Map parameters = request.getParameterMap();

7.3.3 HTMLForm プロセッサを用いてインスタンス内容の更新

(HTMLFormUpdateServlet.java)

この項では、1項で取得したレンダリング結果モデルに接続されたインスタンスを、2項で取

得したパラメータの Map オブジェクトで更新します。

インスタンスの更新には、HTMLForm プロセッサの updateHtmlForm メソッドで行います。

インスタンスの更新時にエラーが発生した場合は、HTMLFormUpdateInstanceException の例外

が発生します。

HTMLFormUpdateInstanceException が検出された時は、発生した入力例外のリストを取得し、

画面表示処理にてエラー表示を行うため__errors 属性にセットします。

try {

// HTMLForm の更新処理

// 引数にはブラウザから入力された値を含む Map オブジェクトをセット

formProc.updateHtmlForm(parameters);

} catch (HTMLFormUpdateInstanceException updateEx) {

// 入力エラー時の処理

// 入力例外の取得

HTMLFormDataException[] errors = updateEx.getUpdateErrors();

// 入力例外をリクエストに積む

request.setAttribute("__errors", errors);

}

(※ご参考)拡張した入力フォームに入力された値の取得

前章にて独自に拡張した入力フォームから入力値を取得する際には、HTMLForm ライブラリのクラス

(DefaultHTMLFormUpdaterHandler)を継承する形式で実装を行います。

public class HTMLFormUpdaterHandlerExtends extends DefaultHTMLFormUpdaterHandler {

public HTMLFormUpdaterHandlerExtends() {

super();

}

public String getFieldValue(StaticElement elem,

Map parameters,

String name)

throws HTMLFormDataException {

..

return super.getFieldValue(elem, parameters, name);

}

..

}

作成した拡張クラスは、HTMLForm プロセッサ作成時にセットします。

Page 51: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 7章 入力値の更新

45

HTMLFormProcessor formProc = new HTMLFormProcessor(model);

formProc.setHTMLFormUpdaterHandler(new HTMLFormUpdaterHandlerExtends());

7.3.4 更 新 後 イ ン ス タ ン ス の 保 存

(HTMLFormUpdateServlet.java)

この項では、前項で更新したインスタンスをファイルへ保存する方法を説明します。

前項で更新されたインスタンスオブジェクトをファイルに保存するには XBRLProcessor を用

いて以下のように行います。

インスタンスの保存先は、前章でインスタンスオブジェクトを作成する際に使用したインスタ

ンスファイルになります。

// インスタンスの保存

Transformer trans = (Transformer) xbrlProc.getProperty(XBRLProperties.TRANSFORMER);

trans.setOutputProperty(OutputKeys.INDENT, "yes");

// Instance.getSystemId()メソッドでインスタンスオブジェクトを作成した際に使用した

// インスタンスファイルの絶対パスを取得

xbrlProc.saveInstance(ins, new StreamResult(ins.getSystemId()));

7.3.5 更 新 後 イ ン ス タ ン ス の 画 面 表 示

(HTMLFormUpdateServlet.java)

この項では、更新後のインスタンスの内容を画面に表示する方法を説明します。

3 項で更新されたインスタンスは、セッションで常に保持されているものであるため、新たに

更新後のインスタンスをセッションに保持する必要はありません。

更新後のインスタンスを画面に表示するため、/servlet/create でマッピングされている

HTMLFormCreateServlet へ遷移します。

// 再度、入力画面を表示するためにフォワード

RequestDispatcher rd = this.getServletContext().getRequestDispatcher("/servlet/create");

rd.forward(request, response);

Page 52: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 8章 インスタンスの評価

46

第8章 インスタンスの評価

Page 53: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 8章 インスタンスの評価

47

8.1 概要

画面上に入力された値で更新されたインスタンスの内容についてインスタンスの内容が妥当

かの評価を、Formula プロセッサを用いて行うことができます。

サンプルプログラムでは、ValueAssersion を用いて入力値の妥当性の評価を行っています。

Page 54: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 8章 インスタンスの評価

48

8.2 Formulaプロセッサでのインスタンスの評価

Formula プロセッサを用いてインスタンスの評価を行うには、評価用の Formula ファイルを準

備します。サンプルプログラムでは assertion-formula.xml ファイルです。

サンプルプログラムでは、入力値の評価を行うため ValueAssersion を用いた以下の Formula

式を作成しています。

上記の画面にて、枠で囲まれた箇所に対してそれぞれ変数を設定し以下の式が成り立つ場合、

入力された値は妥当であると判断します。

$totalValue = $hwValue + $swValue + $consultantValue

サンプルプログラムでは、初期状態では上記の画面状態になっており、この状態で評価を行う

400($totalValue) = 100 ($hwValue) + 200($swValue) + 300($consultantValue)

400 ≠ 600

となり、評価結果はエラーとなります。

各入力値を以下に変更して評価を行うと、入力値は妥当であると判断されます。

600($totalValue) = 100 ($hwValue) + 200($swValue) + 300($consultantValue)

上記の Formula 式を実行するプロセッサを作成します。

初に XBRL プロセッサを作成し、作成した XBRL プロセッサに対して Formula の処理に必要な

機能を追加します。

XBRL プロセッサに対して Formula の処理を追加するには、FormulaLinkProcessorFactory クラ

スの setUpXBRLProcessor メソッドを使用します。

// XBRL プロセッサ生成

XBRLProcessor xbrlProc = new XBRLProcessor();

// Formula 処理に必要な機能を XBRLProcessor に設定します。

FormulaLinkProcessorFactory.setUpXBRLProcessor(xbrlProc);

次に、Formula を実行するプロセッサを作成します。

Formula リンクを参照するタクソノミファイルを取得し、Formula プロセッサを作成します。

$totalValue $hwValue

$swValue

$consultantValue

Page 55: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 8章 インスタンスの評価

49

Formula プロセッサによる評価実行時に評価結果を取得するため FormulaLinkResultHandler

インターフェースの実装をしたクラスを作成し、上記で作成した Formula プロセッサにセット

します。FormulaLinkResultHandler インターフェースを実装したクラスの作成方法は次節に説

明します。

評価対象のインスタンスを上記で作成した Formula プロセッサを用いて評価を行うには、

Formula プロセッサの validate メソッドを使用します。

以下、Formula プロセッサを作成し、インスタンスの内容の評価を実行する例を示します。

// Formula プロセッサを作成するファクトリの生成

FormulaLinkProcessorFactory factory = FormulaLinkProcessorFactory.newInstance();

// Formula のリンクベースを含む TaxonomySet の取得

File formulaFile = new File("/formula/folder/path", "formulaTaxFile.xsd");

TaxonomySet formulaTaxSet =

xbrlProc.loadTaxonomySet(new StreamSource(formulaFile.getAbsolutePath()));

// Formula プロセッサの生成

FormulaLinkProcessor formulaProc = factory.createFormulaLinkProcessor(formulaTaxSet);

// 評価結果を取得するクラスの設定

FormulaLinkResultHandlerImpl formulaResultHandler = new FormulaLinkResultHandlerImpl();

formulaProc.setResultHandler(formulaResultHandler);

// インスタンス(instance)の評価

formulaProc.validate(instance, null, null);

Page 56: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 8章 インスタンスの評価

50

8.3 Formulaプロセッサでの評価結果の取得

Formula プロセッサでの評価結果は、FormulaLinkResultHandler インターフェースを通じて取

得することができます。

FormulaLinkResultHandler インターフェースを実装したクラスを作成する際には、以下のメ

ソッドを実装する必要があります。

・assertionResult(boolean result, AssertionContext assertionContext)

→ assertion の評価結果を受け取ります。

・assertionFinalResult(boolean result)

→ すべての assertion を評価した結果を受け取ります。

・ formulaResult(com.fujitsu.xml.xbrl.xwand.instance.Item fact, FormulaContext

formulaContext)

→ formula の評価結果を受け取ります。

・formulaFinalResult(com.fujitsu.xml.xbrl.xwand.instance.Instance instance)

→ すべての formula を評価した結果を受け取ります。

実装方法は、Formula API リファレンスを参考にしてください。

Page 57: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 8章 インスタンスの評価

51

8.4 サンプルプログラムの説明

この節では、更新後のインスタンスを用いて入力値の妥当性の評価方法をサンプルプログラム

で解説します。

サンプルプログラムでは、妥当性の評価処理を HTMLFormUpdateServlet クラスの validate メ

ソッド内で行います。

サンプルプログラムでは以下の手順で評価処理を行います。

1. 評価に必要なプロセッサとインスタンスの準備

2. FormulaLinkResultHandler インターフェースの実装

3. インスタンスの評価の実行

4. インスタンスの評価結果と評価エラーの取得

8.4.1 評 価 に 必 要 な プ ロ セ ッ サ と イ ン ス タ ン ス の 準 備

(HTMLFormUpdateServlet.java# serviceメソッド)

この項では、Formula での評価に必要なプロセッサとインスタンスの準備を行います。

インスタンスの評価に必要な以下のプロセッサをセッションから取得します。

- Formula プロセッサ

// Formula プロセッサを取得

FormulaLinkProcessor formulaProc = (FormulaLinkProcessor)

request.getSession().getAttribute("__formulaProc");

評価対象のインスタンスは、前章の更新処理で更新されたインスタンスを使用します。

8.4.2 FormulaLinkResultHandler の 実 装

(FormulaLinkResultHandlerImpl.java/FormulaLinkAssertionResultInfo.jav

a)

この項では、Formula プロセッサでの評価結果を受け取る FormulaLinkResultHandler インタ

ーフェースを実装したクラスの作成方法を説明します。

4 項で必要となる Formula プロセッサを用いた妥当性の評価結果を受け取るため、

FormulaLinkResultHandler インターフェースを実装したクラスを作成します。

サンプルプログラムでは ValueAssersion の評価結果を assertionResult メソッド内で受け取

り、評価エラーが発生した場合、メッセージと Assertion に関連する UserElement を取得しま

す。

Page 58: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 8章 インスタンスの評価

52

取得したメッセージと UserElement は FormulaLinkAssertionResultInfo クラスに格納され、

ArrayList に登録されます。

登録された ArrayList は getFaildAssertionContextInfo メソッドを用いて取得できるように

します。

FormulaLinkAssertionResultInfo.java /**

* Formula バリデートの評価式(Assertion)の評価情報を格納するクラス

*/

public class FormulaLinkAssertionResultInfo {

private String message;

private ArrayList userElementList = new ArrayList();

/**

* 評価式(Assertion)のメッセージを取得します。

* @return 評価式(Assertion)のメッセージ

*/

public String getMessage() {

return message;

}

/**

* 評価式(Assertion)のメッセージを設定します。

* @param message 評価式(Assertion)のメッセージ

*/

public void setMessage(String message) {

this.message = message;

}

/**

* 評価式(Assertion)に関連する UserElement のリストを取得します。

* @return 評価式(Assertion)に関連する UserElement のリスト

*/

public ArrayList getUserElementList() {

return userElementList;

}

/**

* 評価式(Assertion)に関連する UserElement のリストを設定します。

* @param userElementList 評価式(Assertion)に関連する UserElement のリスト

*/

public void setUserElementList(ArrayList userElementList) {

this.userElementList.clear();

if (userElementList == null) {

return;

}

for (Iterator iterator = userElementList.iterator(); iterator.hasNext();) {

Object object = (Object) iterator.next();

if (object instanceof UserElement) {

UserElement userElement = (UserElement) object;

this.userElementList.add(userElement);

}

}

}

}

Page 59: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 8章 インスタンスの評価

53

FormulaLinkResultHandlerImpl.java /**

* FormulaLinkResultHandler クラスの実装クラスです。

* ・FormulaLink プロセッサから通知された評価結果を標準出力へ出力します。

* ・失敗した評価式(Assertion)の評価情報を蓄積します。

*/

public class FormulaLinkResultHandlerImpl implements FormulaLinkResultHandler {

// 失敗した評価式(Assertion)の評価情報

private ArrayList assetionContextInfoList = new ArrayList();

/**

* 評価式(Assertion)の評価結果を受け取ります。<br/><br/>

*

* 標準出力へ評価式(Assertion)の情報を出力します。<br/>

* 失敗した評価式(Assertion)の評価情報を蓄積します。<br/>

* 蓄積した評価情報は、getFaildAssertionContextInfo()で取得します。

*

* @param result 評価結果 (bool 値)

* @param assertionContext 評価時の評価式(Assertion)の情報

*/

public void assertionResult(boolean result, AssertionContext assertionContext) {

if (!result) {

FormulaLinkAssertionResultInfo resultInfo = new FormulaLinkAssertionResultInfo();

// 評価情報に評価式(Assertion)の説明を設定

String message =

assertionContext.getResourceInformation().getGenericLabelAsString(null, null, null);

resultInfo.setMessage(message);

// 評価式(Assertion)に関連する UserElement を取得する

// ConsistencyAssertion, ExistenceAssertion には未対応

ArrayList failedUserElementList = resultInfo.getUserElementList();

short assertionType = assertionContext.getAssertionType();

if (assertionType == ResourceInformation.RESOURCE_TYPE_VALUE_ASSERTION) {

BoundVariable[] bvs =

((ValueAssertionContext) assertionContext).getBoundVariables();

for (int j = 0, nn = bvs.length; j < nn; j++) {

BoundVariable bv = bvs[j];

int boundSize = bv.getBoundSize();

for (int k = 0; k < boundSize; k++) {

Object value = bv.getValue(k);

if (value instanceof UserElement) {

failedUserElementList.add(value);

}

}

}

}

assetionContextInfoList.add(resultInfo);

}

}

/**

* 失敗した評価式(Assertion)の評価情報(FormulaLinkAssertionResultInfo)のリストを返します。

*

Page 60: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 8章 インスタンスの評価

54

* @return 失敗した評価式(Assertion)の評価情報(FormulaLinkAssertionResultInfo)のリスト

*/

public List getFaildAssertionContextInfo() {

return assetionContextInfoList;

}

/**

* 失敗した評価式(Assertion)の評価情報(FormulaLinkAssertionResultInfo)のリストを

* クリアします。

*/

public void clearFaildAssertionContextInfo() {

assetionContextInfoList.clear();

}

}

作成したクラスは Formula プロセッサにセットします。

FormulaLinkResultHandlerImpl formulaResultHandler = new FormulaLinkResultHandlerImpl();

formulaProc.setResultHandler(formulaResultHandler);

8.4.3 イ ン ス タ ン ス の 評 価 の 実 行

(HTMLFormUpdateServlet.java# validateメソッド)

この項では、更新後のインスタンスを Formula プロセッサで評価の実行方法を説明します。

インスタンスの妥当性の検証を実行するには、Formula プロセッサの validate メソッドを用

いて以下のように行います。

// インスタンス(input_ins)の妥当性の検証を実行します。

formulaProc.validate(input_ins, null, null);

8.4.4 インスタンスの評価結果と評価エラーの表示

この項では、Formula プロセッサでの評価結果の取得方法を説明します。

評価結果は、2 項で作成した FormulaLinkResultHandler インターフェイスを実装したクラス

から取得します。

当 サ ン プ ル プ ロ グ ラ ム で は 、 検 証 結 果 が エ ラ ー と な っ た 内 容

(FormulaLinkAssertionResultInfo) を 取 得 し て 画 面 に 表 示 す る エ ラ ー 情 報

(HTMLFormDataException)を作成します。

評価時に発生したエラー情報は配列として HTMLFormUpdateInstanceException に格納し、

throw することで呼び出し元である service メソッドに通知されます。

// 失敗した評価式(Assertion)のエラー情報を作成

List failedContextInfoList = formulaResultHandler.getFaildAssertionContextInfo();

if (failedContextInfoList != null && failedContextInfoList.size() > 0) {

int failCount = failedContextInfoList.size();

HTMLFormDataException[] errors = new HTMLFormDataException[failCount];

for (int i = 0; i < failCount; i++) {

Page 61: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 8章 インスタンスの評価

55

FormulaLinkAssertionResultInfo contextInfo =

(FormulaLinkAssertionResultInfo) failedContextInfoList.get(i);

// エラーメッセージに評価式(Assertion)の説明を設定

String message = contextInfo.getMessage();

// 評価式(Assertion)に関連する UserElement を、対応する form タグの 'name'

// 属性値に変換する

ArrayList failedUserElementList = contextInfo.getUserElementList();

ArrayList nameList = new ArrayList();

int userElementCount = failedUserElementList.size();

if (userElementCount > 0) {

// HTMLFormUpdateHandler から UserElement と入力フォームの 'name' 属性値の

// マップを取得

Map userElementMap = formProc.getHTMLFormUpdaterHandler().getUserElementMap();

for (int j = 0; j < userElementCount; j++) {

UserElement ue = (UserElement) failedUserElementList.get(j);

if (userElementMap.containsKey(ue)) {

String name = (String) userElementMap.get(ue);

nameList.add(name);

}

}

}

String[] names = (String[]) nameList.toArray(new String[0]);

// 評価式(Assertion)ごとに入力フォームの値の例外を作成し、配列に格納する。

HTMLFormDataException e = new HTMLFormDataException(message, names);

errors[i] = e;

}

throw new HTMLFormUpdateInstanceException(errors);

}

Page 62: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 9章 補足

56

第9章 補足

Page 63: WebForm 開発ガイド - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/m120007/b1wd...- XBRLは、XBRL International, Inc.の米国およびその他の国における登録商標です。

第 9章 補足

57

9.1 XBRLプロセッサオブジェクト作成時の注意

XBRL プロセッサのオブジェクトを使用する際には、RenderingLink プロセッサを有効にする

ため、XBRL プロセッサオブジェクト作成後に以下の設定を必ず行ってください。

HTMLFormStartServlet.java

// XBRL プロセッサ生成

XBRLProcessor xbrlProc = new XBRLProcessor();

// Rendering Link の処理を有効にする

xbrlProc.setProperty( "http://www.fujitsu.com/xml/xwand/process-generic-linkbase", "yes");