ページJavaクラス作成(2)
添付ファイルテーブルの追加
ツールで作成した「ArticleEditForm.java」にはArticleTable中のフィールドのみが配置されています。この状態で、1件のArticleTableのレコードを処理できるフォームになっています。このフォームに対し複数のAttachFileTableのレコードを処理できるようにします。1つのフォームでテーブルの複数のレコードを処理する場合、HtmlTableクラスを使います。HtmlTableはHTMLの<table>タグに対応するクラスで、以下の種類があります。
| クラス名 | 用途 |
|---|---|
| HtmlTable | 通常のテーブルです。複数のコードのデータを表示することができます。各種HtmlTableクラスの基本クラスです。 |
| PageScrollHtmlTable | 主にQueryResultFormに配置され、検索結果のページスクロールを行うテーブルです。自動的にページスクロール用のボタンなどが配置されます。 |
| EditableHtmlTable | 編集可能なHTMLテーブルです。テーブルの行追加、削除、並べ替えをサポートしています。 |
今回は複数の添付ファイルを指定するためのテーブルなので、EditableHtmlTableを配置します。以下のソースコードの太字部分は、EditableHtmlTableにテーブルのIDと、AttachFileTableの各フィールドを配置し、フォームに貼り付けています。
/**
* コンストラクタ。
*/
public ArticleEditForm() {
ArticleTable table = new ArticleTable();
this.addTableFields(table);
// 添付ファイル指定用のテーブルをフォームに配置します。
AttachFileTable aft = new AttachFileTable();
EditableHtmlTable tbl = new EditableHtmlTable("attachFileTable", aft.getFieldList());
this.addHtmlTable(tbl);
}
AttachFileTable中にはFileIdFieldが存在します。このフィールドは通常のSmallintFieldから派生しているため、編集対象のフィールドになってしまいます。このフィールドは添付ファイルを識別するためにシステムが自動採番するようにし、ページ上に表示しないフィールドにします。そのために、以下の太字部分を追加してください。
package bbs.field;
import dataforms.field.sqltype.SmallintField;
/**
* FileIdFieldフィールドクラス。
*
*/
public class FileIdField extends SmallintField {
/**
* フィールドコメント。
*/
private static final String COMMENT = "ファイルID";
/**
* コンストラクタ。
*/
public FileIdField() {
super(null);
this.setComment(COMMENT);
}
・・・ 中略 ・・・
@Override
protected void onBind() {
super.onBind();
// HTMLの対応するフィールドは<input type="hidden" />に展開する
this.setHidden(true);
}
}
この修正を行ったら、一度プロジェクトをクリーンビルドし、Tomcatのオートデプロイの完了を待ちます。
