[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 メーリングリストの案内