<select>タグの選択肢の設定
AttachFileTableはファイルの種類ごとにblobを用意し、ファイルタイプ別に使い分ける仕様にしました。これはデータベース設計の観点からするとあまりよくない設計ですが、dataforms.jarが持つ特殊なファイル フィールドの機能を生かすため、あえてこのようにしています。このテーブルではファイルタイプの<select>でファイル、画像、動画、音声を指定し、そのタイプに応じたフィールドのみをページに表示するようにするような制御を追加したいと思います。
記事の新規登録のフォームでファイルテーブルの行を追加すると分かりますが、ファイルタイプの選択肢が表示されていません。
自動生成されたHTMLは以下のようになっているので当然の結果です。
<select id="attachFileTable[0].fileType"></select>
大抵のフレームワークでは、この部分に<option>を記述することになると思います。しかし、dataforms.jarではこのような選択肢をデータベースから取得します。まず、[基本機能/列挙型管理]を使用し、以下のように選択肢を新規登録します。
今回作成したFileTypeFieldクラスは、EnumOptionSingleSelectFieldというクラスから派生しています。EnumOptionSingleSelectFieldクラスは、[基本機能/列挙型管理]で登録した選択肢を選択するフィールドクラスです。上の画面では[fileType]という選択肢を登録したので、「FileTypeField.java」の定数ENUM_TYPEを"fileType"に修正します。
・・・ 前略 ・・・
/**
* 列挙名称。
*/
private static final String ENUM_TYPE = "fileType"; // 適切に修正して使用してください。
/**
* フィールドコメント。
*/
private static final String COMMENT = "ファイルタイプ";
/**
* コンストラクタ。
*/
public FileTypeField() {
super(null, ENUM_TYPE);
this.setComment(COMMENT);
}
・・・ 後略 ・・・
太字部分を修正してビルドすると、ファイルタイプの選択肢にファイル、画像、動画、音声が表示されるようになります。
多言語対応
ファイルタイプを登録する際、言語コードは全て[default]で登録しました。今回は日本語のみの対応なのでこれで良いのですが、英語版が必要な場合は言語コード[default]には英語で登録し、言語コード[ja]に日本語を登録します。このように設定すると、ブラウザに設定された言語に対応した選択肢が出力されるようになります。英語、日本語以外の言語を追加する場合は「web.xml」の以下の部分に言語コードを追加します。以下の例ではドイツ語(de)を追加しています。
<!-- サポートする言語コードを指定します。
default以外の言語コードを","区切りで指定します。
EnumOptionNameTable等、言語ごとに名称を登録するテーブルで使用します。
-->
<context-param>
<param-name>support-language</param-name>
<param-value>ja,de</param-value>
</context-param>
ページを英語と日本語に対応する場合、英語版ページを「XxxPage.html」に記述し、日本語版ページを「XxxPage_ja.html」に記述します。これによりブラウザの言語設定に応じて、自動的に日本語と英語が切り替わるページになります。dataforms.jarの*.htmlは一切ロジックを含まないので、日本語版のシステムができたら、英語版の実装はHTMLと英語のできる方に丸ごと任せられるようになっています。現在のバージョンでは基本機能の各ページのみ英語版(自動翻訳レベルです)を用意しています。開発ツールは機能追加を考えているので、現状では日本語版しかありません。
