[Seasar-user:15518] Re: [Teeda]Treeコンポーネントの状態維持
Tetsuya Anzawa
[E-MAIL ADDRESS DELETED]
2008年 8月 26日 (火) 10:09:25 JST
安澤です。
お世話になります。
> 小林 (koichik) です.
>
> Date: Sat, 23 Aug 2008 18:10:48 +0900
> From: "Tetsuya Anzawa" <[E-MAIL ADDRESS DELETED]>
> To: <[E-MAIL ADDRESS DELETED]>
> Subject: [Seasar-user:15484] [Teeda]Treeコンポーネントの状態維持
>
>> Treeコンポーネントの状態維持で困っております。
>> ツリーを操作(フォルダを開いたり、閉じたり)したタイミングでサブミットすることってできないでしょうか?
>
> ツリーを操作する度サブミットするのは JavaScript を
> 使うツリーを使う必要がなくなってしまうような.
>
ま、それは確かにそうなんですが。
>> 具体的に困っているのは、
>> Teedaレイアウト機能を用いた「サイドメニュー(Treeコンポーネント使用)」+「メイン画面」で構成される
>> WEBアプリにて、サイドメニューのツリーを操作(フォルダを開いたり、閉じたり)した後に、メイン画面を
>> 操作すると、サイドメニューのツリーの状態が維持されないというものです。
>> ツリーを操作した時点で状態が維持されるような方法があればと・・。
>
> tree を含むメニューとメイン画面が異なった
> <form> だと,メイン画面をサブミットした際に
> tree の状態を維持するのは絶望的な感じです.
>
> tree を使うのであれば,レイアウトでメニューを
> <te:include> するのではなく,メイン画面の
> <form> の内側でメニューを <te:include> する
> くらいしか自分は思いつきませんでした.
>
> ・メイン画面の HTML
>
> <form id="form">
> <te:include id="menu" te:src="/layout/menu.html"/>
> ...
>
> ・menu.html
>
> <input type="hidden" id="treeTreeSave" />
> <te:tree value="#{layout_menuPage.tree}" id="client-tree" var="node"
> varNodeToggler="t">
> ...
>
> ・MenuPage
>
> public class MenuPage {
> public TreeNode tree;
>
> public void initialize() {
> if (tree != null) {
> return null;
> }
> tree = new TreeNodeImpl(...);
> ...
> }
> }
>
> メイン画面に対応するページクラスと異なり,
> ポストバックでも initialize() が呼ばれるので
> 注意が必要です.
>
>
> この方法でも,メイン画面に複数の <form> を
> 持つ画面の場合,メニューをインクルードした
> <form> 以外をサブミットすると tree の状態が
> 失われます.
>
> それが許容できない場合は,Teeda の tree を
> 使うよりも,JavaScript ライブラリのツリーを
> 使う方がいいように思います.
>
ツリーのために制限ができてしまうのは厳しいので、Teedaのツリーは諦めて、
JavaScriptライブラリのツリーを使うか、自前で簡易ツリーを実装するかにしようと思います。
ご丁寧に教えて頂きましてありがとうございました。
Seasar-user メーリングリストの案内