SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

OSSフレームワーク「dataforms.jar」でサンプルプログラムを構築する(1)

ページJavaクラス作成(2)

添付ファイルテーブルの追加

 ツールで作成した「ArticleEditForm.java」にはArticleTable中のフィールドのみが配置されています。この状態で、1件のArticleTableのレコードを処理できるフォームになっています。このフォームに対し複数のAttachFileTableのレコードを処理できるようにします。1つのフォームでテーブルの複数のレコードを処理する場合、HtmlTableクラスを使います。HtmlTableはHTMLの<table>タグに対応するクラスで、以下の種類があります。

HtmlTableクラスの種類
クラス名 用途
HtmlTable 通常のテーブルです。複数のコードのデータを表示することができます。各種HtmlTableクラスの基本クラスです。
PageScrollHtmlTable 主にQueryResultFormに配置され、検索結果のページスクロールを行うテーブルです。自動的にページスクロール用のボタンなどが配置されます。
EditableHtmlTable 編集可能なHTMLテーブルです。テーブルの行追加、削除、並べ替えをサポートしています。

 今回は複数の添付ファイルを指定するためのテーブルなので、EditableHtmlTableを配置します。以下のソースコードの太字部分は、EditableHtmlTableにテーブルのIDと、AttachFileTableの各フィールドを配置し、フォームに貼り付けています。

ArticleEditForm.javaに添付フィルを指定するテープを追加
    /**
     * コンストラクタ。
     */
    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から派生しているため、編集対象のフィールドになってしまいます。このフィールドは添付ファイルを識別するためにシステムが自動採番するようにし、ページ上に表示しないフィールドにします。そのために、以下の太字部分を追加してください。

FileIdField.javaはhiddenに展開するように変更
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のオートデプロイの完了を待ちます。

次のページ
HTMLの作成

この記事は参考になりましたか?

特集記事連載記事一覧

もっと読む

この記事の著者

高柳 正彦(タカヤナギ マサヒコ)

経験年数30年を超えた、システムエンジニアです。一応管理職のはずですが、未だにコードを書いています。この仕事を長々とやっていると、それなりにノウハウがたまってきます。そのノウハウをまとめたものができないかと思い、独自のフレームワークを作り始めました。そのフレームワークもそれなりに使えるようになってき...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10018 2017/05/15 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー