ActionParamについて
id:chopper12rさんが質問を書いてくれているので、回答します。
サンプルはこんなコードとします。
@POST @ActionParam//? public Navigation add(WebContext context) { // Injector自体をInjectしてrequestを取得する場合 // HttpServletRequest request = // injector.getInstance(HttpServletRequest.class ); calc(); return Forward.to("/pages/add.jsp"); } @POST @ActionParam("add2.x")//? public Navigation imgTest(WebContext context) { calc(); return Forward.to("/pages/add.jsp"); } @POST @ActionParam() public Navigation hoge(WebContext context) { calc(); return Forward.to("/pages/add.jsp"); }
で、疑問はこちら。
T2のFAQではT2_FAQ_ja - t-2 - Google Codeに@ActionParam("add2.x")はIE用と書いてあったのですが、
http://d.hatena.ne.jp/chopper12r/20090409
するとimgTestというメソッド名は気にしなくてもいいということなのかな?ブラウザがFireFoxでも".x"は認識するの?
するとhogeは何?という感じで??となってしまいました。
@ActionParamはサブミットされたボタンを認識するためのアノテーションです。
例えばサンプルコード?のaddメソッドのように、@ActionParamだけだと、
メソッド名=ボタンのname属性だと認識します。つまり、input type="submit" name="add"の
ボタンが押されるとaddメソッドが動きます。
メソッド名=ボタンのname属性だと認識します。
また、?のように@ActionParam("hoge")のようにと書いている場合はどうなるのでしょうか。
この場合、hogeというname属性を持つボタンが押されたときに動きます。
@ActionParamでどのボタンが押されたときに動くかが明示的に指定されているので、
imgTestというメソッド名は気にする必要がありません。
また、@ActionParam("add2.x")は、画像を使った(input type="image")ときに
IEがname属性をadd2.xとしてポストしてくるので、そのワークアラウンドです。
Guiceについては、うーん、ちょっと好みではない感じです。T2 Samplesで試した方がいいかも・・・
http://d.hatena.ne.jp/chopper12r/20090409
最初にT2だけ知りたい場合は、GuiceつきのサンプルよりはT2 Samplesのほうが良いと思います。
特にT2にこだわらず、質問とか疑問等あれば、よろしくです♪>id:chopper12rさん
Pilika+T2
Pilikaのサンプルが出来たようです。素晴らしい。
JavaでもPHPでもフレームワークが複雑になりすぎている感が強いです。
http://d.hatena.ne.jp/shuji_w6e/20090409
しかし、T2もPilikaは非常に軽いフレームワークの組み合わせです。ソースコードもちょっと覗いてみれば、
マニュアルを読まなくてもなんとなく簡単に理解できると思います。簡単に理解できるというのは凄く重要で、
シンプルで解りやすいという事は生産性も保守性も担保しやすいということです。
この辺は全く同じ思いです。
使ってくれる開発者が制御可能なものを提供し続けるのがT2プロジェクトのテーマの一つです。
また、それぞれの開発者の固有の事情もあるわけで、それらを考えるとなるべくグリップしやすい形になるように気を使っています。
そのためにはシンプルさ・やりすぎてない感が大事です。あ、これなら自分でも直せるな・何かあっても自分でもやれるな、
そういう感覚です。僕個人も案件やるなら、巨大なフレームワークよりそういうのを選ぶことでしょう。
自分がリスクを背負えるなという感覚は案件に望むときに自信につながり、それが開発の効率に響きます。
使ってくれる方が、不安を抱えず自信をもって案件に望める、そういうプロダクトを出したいなと常々思っています。