機能を持たせたい。まだ Struts を学び始めのころいろいろ試行錯誤
して断念したのを覚えていて、それからこれは億劫だ。
でも、Rails ならば手間が少ないだろうとはじめてみる。
パス用の TextField の右に link を用意して、そのリンクが押されたら
ディレクトリが選べるようにする。一旦ルートを離れると同様のアクションを
引数つきで呼び出すファイルのリストも表示する。一旦構成要素が選ばれ
たら TextField の内容も更新する。
これは結構簡単にできて、よさそうだったが、テキストフィールドの
初期値を処理に反映できない。わかっている部分までパスを入れて、
その後の部分をアクションに補助してもらうということができない。
なぜなら、link はフォームのフィールドを送れないからだ。たとえ
text_field でドメインオブジェクトを TextField に結び付けて
いてもだ。
submit_tag でボタンを作ってそのアクションでディレクトリを選択して
いく。この方法ではアクションをボタンの id で判別するしかないし、
引数は渡せない。1と併用しなければならないし、そうするとコードが
増えるだけだ。ボタン固有の引数が渡せると便利なのだが...
もうひとつ、このような機能を持たせたいフィールド部分だけ、専用の
フォームとして使用できないかと考えてみた。これにかんしては
form tag のネストは標準的でないということで断念。
最後の方法は JavaScript の利用だ。できればこれは避けたかった。
汎用的なものを作るのが難しいのと、デバッグがやりにくいというのが
大きな理由だ。ただし、DOM と非同期通信を使えばいろいろなことが
できるはずだ。
Spring 2.0 本でみた DWR のサンプルを思い出した。ぱっと見は現在の
ウインドウの中にモーダルウィンドウが現れて、そこに操作をして
submit という流れに見える。
サンプルを見ていくと script.aculo.us の effect の Effect.Appear
を使って小さなウィンドウを表示しているように見える。その機能だけを
試してみると画面上の div 要素を効果をつけて表示している。どう見ても
モーダルウィンドウを表示するとはことなる動きだ。
ちょっと考えて、確認して納得したが、サンプルでは CSS を使って
位置、サイズを固定した div 要素に対して Effect.Appear を使っている。
サンプルとしてはいいのだが、これでは困ったことがおきるのではないか?
画面上に他の画面に移行するフォームやリンクがあったらどうする?
script.aculo.us を検索していると lightbox というライブラリを見つけた。
http://www.huddletogether.com/projects/lightbox2/
サンプルで写真を選ぶと (CSS で作ったと思われる) ウィンドウが現れ
拡大された写真が表示される。背景にはシェーディングがかかって
暗くなっている。見た目はなかなかいいぞ。
元はといえば WLS の deploy 画面が便利だなという漠然とした感想が
あったのだが、よく考えるとこちらはフォームを使っていない。
何らかの基点を記憶させて置くことはできるのかも知れないが、
これくらいなら作れそう。
http://localhost:7001/console/console.portal?
_nfpb=true&
_pageLabel=AppApplicationInstallPage&
AppApplicationInstallPortletISUNIX=YES&
AppApplicationInstallPortletFILECHOOSERPATH=%2Fhome%2Froot
----
関連情報を探しているうちに ajax4jsf というのを見つけた。
サンプルの war が見当たらない...
https://ajax4jsf.dev.java.net/
http://jboss.org/projects/jbossAjax4jsf
0 件のコメント:
コメントを投稿