@Varの使い方(いろいろ試してみる)
せっかく教えてもらったので色々と試してみました。
試してみたのは以下3つのパターン
- オーバーロードするとどうなるか
- 値を2つ渡すとどうなるか
- 値を2つ以上渡すとどうなるか
コードは以下の通り。
@RequestScope @Page("edit") public class CodeEditPage { @Default @ActionPath("{foo}") public Navigation index(@Var("foo") String foo) { System.out.println("index() - {foo}"); System.out.println("foo: " + foo); return NoOperation.noOp(); } @GET @ActionPath("hoge/{foo}") public Navigation var(@Var("foo") String foo) { System.out.println("var() - hoge/{foo}"); System.out.println("foo: " + foo); return NoOperation.noOp(); } @GET @ActionPath("hoge/{foo}/{bar}") public Navigation var(@Var("foo") String foo, @Var("bar") String bar) { System.out.println("var() - hoge/{foo}/{bar}"); System.out.println("foo: " + foo + " bar:" + bar); return NoOperation.noOp(); } @GET @ActionPath("hoge2/{foo}/{bar}") public Navigation var2(@Var("foo") String foo, @Var("bar") String bar) { System.out.println("var2() - hoge/{foo}/{bar}"); System.out.println("foo: " + foo + " bar:" + bar); return NoOperation.noOp(); } @GET @ActionPath("hoge3/{foo}/{bar}/{foo}") public Navigation var3(@Var("foo") String foo, @Var("bar") String bar) { System.out.println("var3() - hoge/{foo}/{bar}/{foo}"); System.out.println("foo: " + foo + " bar:" + bar); return NoOperation.noOp(); } @GET @ActionPath("hoge4/{foo}/{bar}/{foo2}/{bar2}") public Navigation var4(@Var("foo") String foo, @Var("bar") String bar, @Var("foo2") String foo2, @Var("bar2") String bar2) { System.out.println("var4() - hoge/{foo}/{bar}/{foo2}/{bar2}"); System.out.println("foo: " + foo + " bar:" + bar + " foo2: " + foo2 + " bar2:" + bar2 ); return NoOperation.noOp(); } }
URL | method | param |
edit/hoge/123 | index() - {foo} | foo: null |
edit/hoge/123/789 | var() - hoge/{foo}/{bar} | foo: 123 bar:789 |
edit/hoge2/123/789 | var2() - hoge/{foo}/{bar} | foo: 123 bar:789 |
edit/hoge3/123/789/456 | var3() - hoge/{foo}/{bar}/{foo} | foo: 456 bar:789 |
edit/hoge4/123/789/456/234 | var4() - hoge/{foo}/{bar}/{foo2}/{bar2} | foo: 123 bar:789 foo2: 456 bar2:234 |
結論
- オーバーロードすると@Varの少ないほうのメソッドが効かずに@Defaultが呼び出される
- 渡せる値はいくつでもOK