谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

S2JSFでWebParts その7

サンプルの説明にも書いた通り、「Add」とか「ForEach」は問題なく動くけど、
「Employee」のサンプルは別画面に遷移してしまう。
要は、メソッドバインディングされるActionの中で、「return null」するものは問題ないけど、
「値を返す」ようなものは別画面に遷移してしまう、ということ。


そもそも、WebPartsの元アイデアであるASP.NET2.0は、AddやForEachと同じ
ポストバック方式で、基本的に、毎回、同じ画面を呼び出す。
ASP.NET2.0では例えば「ウィザード形式」で進むページなんかも、
ウィザードコントロールって呼んで、1ページ内に無理やり押し込めてた。


そんなウィザードをプレビューするためにはVisualStudioが必要になる事を考えると、
ポストバックをそのままS2JSFで行なうのは、あまりやりたくない。
S2JSFの「PlainHTMLでプレビューしやすい」って概念を崩してしまうから。
JSFは、そもそもポストバックモデルだ、というのは置いといて)


そうすると、考えられるのは、、、

  • やっぱりIFrame。パーツが各々に遷移できるから。
  • 男らしく、Actionの呼び出しはAjaxで、遷移先のHTMLを取得してHTMLの書き換えまで行なう。AjaxというよりAHAH。
  • とは言え、とりあえずはポストバックで。

と言ったところ。


散々否定しておきながら何だけど、本命はポストバック。
いやさ、実際に使う状況を考えると、1画面に情報がわんさかあるポータルページで、
EmployeeのようなCRUD処理を行ないたいわけじゃないでしょ。
逆に、CRUD処理を行なう時には、その情報しか見えない方が、集中できて良いぐらい。


要するに

  • ポータルトップ画面はポストバック。比較的小さな変化のみ発生する。Ajaxでも良い。
  • ポータルのリンク先では、通常のページ遷移方式。Employeeなどがこれに相当。

という切り分けを行なうべし、ということ。


ということで、画面遷移はこれでOKとして。
次は、パーツの位置を永続化させるぞー。