ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Apache Tapestryコミュの[T5] コンポーネントの動的な配置

  • mixiチェック
  • このエントリーをはてなブックマークに追加
以下のような事はできるでしょうか。

 <div id="region1">
  <!-- 領域1 -->
 </div>
 <div id="region2">
  <!-- 領域2 -->
 </div>
 <div id="region3">
  <!-- 領域3 -->
 </div>

上のようなテンプレートがあったとして、各「領域」へ、名前だけ分かっている(名前が変数に入っている)コンポーネントを配置したいのです。
配置するコンポーネントの名前は、DBに保存されているものをロードして指定するので、静的には決まりません。

MLの過去ログを漁った限りでは、なんとなくできなさそうな印象なのですが、なにかいい方法はありますでしょうか?


いつも質問ばかりですみません。
よろしくお願いします。

コメント(7)

いつもありがとうございます。

間違っていたらごめんなさい。
ご提案いただいた方法は、テンプレートにあらかじめすべてのコンポーネントを並べておいて、表示するものを切り替える、というものだと理解しました。

最初から事情を説明すべきでしたが、実はいわゆるCMSを実現したいと思っています。
取り扱うコンポーネントのバリエーションは、ほぼ無限なので、静的に配置しておく事はちょっと難しいです。

ご紹介いただいたBeanEditorのコードは、なかなか興味深く、なにかできそうな期待感を持ちましたが、まだ全体は把握できていません。
明日以降、もうちょっと読んでみます。

一応次善の策として、Tapestryで空のdivだけ出力しておいて、Ajaxで内容を流し込む、という方法を考えているのですが、いまいちいけてないので、Tapestry側でもう一押しできればなあ、とわずかな期待を捨てきれずにいます。

なお、本題から外れますが、「block」と「delegate」の使い方がいまいち分かっていなかったのですが、提示していただいたソースのおかげで、少し分かったような気がします。
ありがとうございました。

なにか根本的に間違っている、またはいい方法があるぞという場合には、コメントいただければ嬉しいです。
お手数おかけしてすみません。

どちらかと言えば、後者でしょうか。
ただし、用意されるコンポーネントの数はかなり多いです。
それらのコンポーネントを、10〜20程度のマス(=領域)に自由に並べたいと思っています。

私が調べた範囲では、Tapestryには向かない仕様かなあという感触ですが、なんとかなるものでしょうか?
ちょっと伝わったかどうか自信が無いのですが、他に必要な情報があればぜひ指摘してください。


ところで、Tapestryもいつのまにやら5.0.10(スナップショットなら5.0.11かな)ですね。
英語圏ではMLの流量を見ていても人気がありそうですが、日本ではなかなかメジャーになれませんね。

以上、独り言でした。
コメントありがとうございます。

> 単に数が多いだけであれば、ちょっとしたコードジェネレータ的なものを自作して
> 最初のコメントに書いた DynaComponent.java, DynaComponent.tml に相当するものを
> 自動生成してしまえば良いのではないでしょうか。

この方法ですと、例えばコンポーネントのバリエーションが100あったとすると、DynaComponent.tmlには100のblockがならぶ訳ですよね。
で、DynaComponent自体を10〜20並べる、という認識であっていますか?

私は最初にご提案いただいたときに、このような状況がちょっと大変そうだな、と思ったのですが、rakuさんとしては行けるのではないか、ということですね。

なるほど。
せっかくですので、明日にでも試してみます。

いずれにせよ、ありがとうございました。
またよろしくお願いします。
今日ちょっと試してみたのですが、rakuさんにご提案していただいた方法(DynaComponent)で行けそうな感触をつかみました。
ので、これで行ってみようと思っています。
ありがとうございました。

部品(=コンポーネント)が実装べったりになってしまうのがちょっと気になりましたが、許容範囲内と判断しました。
#本当は、DBにレコードを追加すれば部品が増える、くらいの粗な状態にしておきたかったんですけど。

なんにしてもアドバイスありがとうございました。
非常に助かりました。
今後ともよろしくお願いします。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Apache Tapestry 更新情報

Apache Tapestryのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。