- PR -

Webフォームの

1
投稿者投稿内容
会議室デビュー日: 2004/06/23
投稿数: 4
投稿日時: 2005-03-16 15:20
Webフォームの入力項目をDBから動的に生成するに際して質問があります。

Webフォームの登録画面を作成する際に入力項目をDBから読み込む仕様で
---
PK
項目名
タイプ(チェックボックス、ラジオボタン、テキスト…)
属性値(A B C)
---
ラジオボタンの例で言いますと
---------------
フォーム情報DB
---------------
0001
ペット
ラジオボタン
あり なし
-------------------
になっており、入力されたデータはデータDBに保存するようにしています。
--------
データDB
--------
PK
0001
あり
--------

この際に、JSP+サーブレット(データセットにJava Bean使用)で実現していますが、JSPの側をなるべくシンプルにしたいと思っています。

この場合、どのような手段を用いるのが現実的な処理となるのでしょうか?
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-03-16 17:07
DBで項目保持、ということ自体がめちゃくちゃ「独自」なので
ページ側はそれなりに複雑になると思います。
# もちろん、簡易かつ汎用的(DBいじっても改造少なく)な作り
# にするためには、ロジックセンスが必要になってきます

あとはベースレベルでどれだけ楽できるか、になりますが、それ
はフレームワークなどを使用することでいくらか軽減できるかと。


# 個人的には入力項目をDBに保持するということのメリットがあまり
# 思い浮かばないのですが。。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-03-16 17:36
要は入力仕様がDBにマスタとして格納されている状態で、
その情報から動的に入力フォームを作りたいってことですよね。

結局は入力仕様のインターフェイスにあたる部分は
ゴリゴリ作らなきゃいけないのではないでしょうか。

入力仕様ベースクラスを用意して、
 ・ラジオボタン入力クラス(派生クラス)
 ・テキスト入力クラス(派生クラス)・・・等

入力仕様をクラスとして扱い、それを継承した派生クラスを用意します。
入力仕様クラスにHTML描写の抽象メソッドを定義し、
各派生クラスでオーバーライドしてラジオボタンやテキストの描写をサポートします。

画面で使用する場合は、サーブレットでDBから取得した入力仕様を元に
入力仕様クラスの派生クラスのインスタンスを生成してリクエストに格納、
JSPはそれを取得して描写メソッドを呼び出すというのが一番きれいにまとまると思います。
タグライブラリ化すると、もっときれいにまとまるのではないでしょうか。

これらの実装方法はStrutsのタグライブラリのソースを読むと良くわかると思います。
会議室デビュー日: 2004/06/23
投稿数: 4
投稿日時: 2005-03-16 17:46
(株)ぽちさんありがとうございます。

># 個人的には入力項目をDBに保持するということのメリットがあまり
># 思い浮かばないのですが。。

そうですね…是非についてはともかくDBにフォーム情報(項目が必須であるかとか)を持たせることが要求されることは結構よくあります(言語に関わらず)。今回のようなケース(項目内で属性、要素数までもつ)は初めてではありますが、DBをいじるだけで細かい要求に応じるというメリットがあるからのようです。

ソースを浚ってみたのですがStrutsを利用すると別物になりますので、私にとって対応が厳しいところです。

このような状況でJSPをシンプルにする良いアイデアが何か無いものでしょうか?

# センスないのも確かですが、自分^^;
会議室デビュー日: 2004/06/23
投稿数: 4
投稿日時: 2005-03-16 17:59
>結局は入力仕様のインターフェイスにあたる部分は
>ゴリゴリ作らなきゃいけないのではないでしょうか。
>入力仕様ベースクラスを用意して、
> ・ラジオボタン入力クラス(派生クラス)
> ・テキスト入力クラス(派生クラス)・・・等
>入力仕様をクラスとして扱い、それを継承した派生クラスを用意します。
>入力仕様クラスにHTML描写の抽象メソッドを定義し、
>各派生クラスでオーバーライドしてラジオボタンやテキストの描写をサポートします。
>画面で使用する場合は、サーブレットでDBから取得した入力仕様を元に
>入力仕様クラスの派生クラスのインスタンスを生成してリクエストに格納、
>JSPはそれを取得して描写メソッドを呼び出すというのが一番きれいにまとまると思います。

かつのりさんありがとうございます。
派生クラスをどう作成するか考えてみます。Strutsの使用は全体の整合性を考えると厳しそうです。今後の課題とさせて頂きます。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-03-16 18:04
別にStrutsにこだわる必要はないですよ。
StrutsにはHTMLタグがあり、text/radio/checkbox...等
色々フォーム用のタグを描写するタグライブラリがあります。

タグライブラリの基底クラス
  Strutsのタグの共通の基底クラス
    Strutsのフォーム部品用のクラス
      ラジオボタンクラス
      テキストボックスクラス

と、こんな感じの階層になっています。
つまり、

タグライブラリの基底クラス
  入力仕様クラス
    ラジオボタンクラス
    テキストボックスクラス

のような構成にしてみたらどうですか?ということです。
Strutsを使えとは言ってません。

引用:

このような状況でJSPをシンプルにする良いアイデアが何か無いものでしょうか?



書込みが理解してもらえなかったのかな・・・
会議室デビュー日: 2004/06/23
投稿数: 4
投稿日時: 2005-03-16 18:15
かつのりさん細かいご説明ありがとうございました。

タイムラグが発生して上手く話が噛み合わず申し訳ありません。
1

スキルアップ/キャリアアップ(JOB@IT)