まずは、javascriptでの再帰処理で・・・
ある親要素に帰属する複数の要素がある場合(例えば「組織」が持つ「拠点」)に、Ajax的なHTML表示には dwr.util.addRows(…)を使うと非常に「楽チン」なので多用していました。しかし、帰属する複数の要素が再帰的な場合(例えば「部署(部・課・係)」)には、rowCreator:記述内にさらにaddRows的な再帰処理を試してみても・・・ムリみたい。
で、となれば「より手作り側」に戻って、javascriptで、ゴリゴリ記述しました。・・・Listをループして各行の表示要素を作成しツツ、ソイツに子要素Listがあれば、己れ自身(function)を再帰的に呼び出す。・・・へへへっ、エレガントじゃん。ところが、「深さ1」から「深さ2」を数行表示して、本来は次の「深さ1」に戻って続くハズが、表示されない。
結論:javascriptはvar宣言した場所(scope)内で通用するが、var宣言しないと、グローバル変数とみなされちゃう。・・・・えっ!。宣言を省略すると範囲が大きくなるとは、感覚的に違和感があるなぁ。っま、仕様ならばしょうがない。つまり今回のミスは、再帰的なfunction内のループカウンタのiにvar宣言がなかったので、2回目以降はゼロからの再カウントをしていなかったらしいのだ!function内でvar宣言すると、アッサリと正常動作した。・・・とほほ。
参考にしたコンテンツ:ペントミノを解く ←シラーっと書いてありますが、納得できました。ありがとさんです。
script.aculo.usのsortableで
ほいで、その子要素の順序の指定(変更)は、いつものように「ツマんでポイ」のscript.aculo.usでカッチョ良く・・・と、アレ?・・・。ツマメナイ。何もエラーも出ていないゾ。で、これは5分で解決。コンテンツを作ってから設定をしろ・・・と、なんだそんなコトか。っでも、行追加したら改めて設定し直さないと追加行は「仲間外れ」になるようです。ちっちぇえハマリでしたが貴重な内容でした。
参考にしたコンテンツ:happy lie, happy life ピンポイントでありがたかったッス。