inputText


前回までにoutputTextはやりました。
今回はinputTextをやりましょう。


inputTextも非常に簡単です。
通常のinputで、typeにtext、idをarg1のように
Pageクラスのプロパティ名をつけるだけです。

add.html
<input type="text" id="arg1" title="INPUT1"/>


AddPage
public class AddPage {

	private int arg1;

        //getter, setterは省略


親クラスで記述しておくことも可能です。

submitと画面遷移1(do)


出力、入力と来たので、あとはsubmitボタンを説明すれば
簡単なアプリを作ることが出来ます。


というわけでボタンです。



ボタンは今までと違い、ちょっとした規約があります。
といってもHTML上では相変わらずidをふるだけです。
ボタンには3種類あります。
・do
・go
・jump

です。


do系のボタンは、それに該当するPageクラスのメソッドが
呼ばれます。たとえばdoCalculateというidをつけておくと、
Pageクラスの同様のメソッドが呼ばれます。

add.html
<input type="submit" value="calculate" id="doCalculate"/>


AddPage
	public String doCalculate() {
		result = arg1 + arg2;
		return null;
	}


ではこれでどのような画面遷移が発生するのでしょうか?
実はdoCalculateメソッドの戻り値が次の画面遷移先になっています。
そのため、doで呼ばれるメソッドはStringの戻り値を持たなければいけません。
return nullの場合、画面遷移は自画面に戻ってきます。
では、たとえばメソッドの実行後に別の画面に遷移したいときはどうすればよいのでしょうか?


簡単です。これだけです。

AddInputPage
	public String doCalculate() {
		result = arg1 + arg2;
		return "addResult";
	}


Stringの戻り値で次のPageクラス名を指定すればよいだけです。
同一サブアプリケーション内(たとえば/view/addの以下)であれば、
"addResult"のようにHTML名をかいてもらえばそれだけで遷移します。
では、別サブアプリケーションに遷移する場合は?
/view/aaa/from.htmlと/view/bbb/to.htmlとすると、
fromからtoへの遷移は、bbb_toとなります。
つまり/view以下からサブアプリケーションを含めて記述してください。
その際にアンスコでパッケージを区切るように記述します。
これはgoでもdoでもjumpでも変わりません。


非常に直感的なのがよくわかってもらえると思います。
またHTMLからも、どのメソッドが実行されるかが瞬時にわかります。
よくある設定をベースにしたフレームワークだと、画面遷移は
全て設定ファイルに記述するのが当たり前ですが(アノテーションでも同じです)、
本来見なくてもよいリソースにどこに遷移するのかを見に行かねばいけません。
Teedaではもっとも画面遷移に関係あるリソースにそのまま記述できるようにしています。

submitと画面遷移2(go)


では、次はgoについて説明します。
goはdoのように特定のメソッドが呼ばれるわけではありません。
しかし、Aという画面からBという画面に直接行きたい場合などが
あると思います。そのような場合にgoを使います。

(続く)

プレゼンテーション層フレームワークを特にとりあげるドン引き勉強会(仮)つづき


メンバー確定後も増えたwww

 ・id:masataka_kさん
 ・id:yone098さん
 ・id:bluerabbitさん
 ・id:mopemopeさん
 ・takaiさん
 ・sugaさん
 ・id:taichitaichiさん
 ・id:matobatさん
 ・id:yuum3さん
 ・上原さん
 ・manholeさん
 ・Skirnirさん
 ・id:dewaさん
 ・おいら

です。14人ですよ・・・


11月25日(土)13時くらい?ですか、時間?

あとは大枠か・・・・
最初どうやってすすめてこうかなあ。


思想的な話とかアーキテクチャな話でいえば、
あ、そういえばスコープについて皆どう思っているのか聞きたい気はする。
通常だとrequest、sessionとかだけだけど
それで足りているとは最近とても思えないので。
PRGパターンを適用するとrequestスコープのインスタンスを2個消費したりする。
SeamはConversationでその辺をどうにかしているけども。


あとはPageとModelは分離したほうがよいのか、同一のほうがいいのかとか。
まさたかさんはPageはsingleton、Modelは各設定されたスコープと
いっているけど、今ひとつ腑に落ちない。見えてないだけかも。


ピュアHTMLへのこだわりとか、RIAってどう思ってますかとか、
まだまだいっぱいあると思うけど、どうでしょう?



(追記)
うお、場所が新宿御苑に変更ですか。

まさたかさん事例追加サンクスです。
Struts2は入れておきますか。というかどうなっているのか今ぜんぜん知らない、Struts2

事例研究追加してみました。
1. Teeda
2. Tapestry5
3. Ikushipe/Mayaa
4. Struts2/JSP and more
5. JBoss Seam/Facelets
6. Click/Velocity
7. Shale
8. Wicket
  9. VRaptors


慣れてきたら、RailsDjangoは誰かやってくれないかなあと希望w


全体の進行は、まさたかさんのアイデアどおり
・前半:事例研究
・後半:思想・アイデアの交換
としたいと思います。
初回だけ、やり方も含め後半で話し合いますか。
合計で3時間とか4時間てとこでしょうか?
13時開始で17時終わりくらいで後は飲みでちょうどよいかなあと。