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さん