読者です 読者をやめる 読者になる 読者になる

@Varの使い方(いろいろ試してみる)

せっかく教えてもらったので色々と試してみました。
試してみたのは以下3つのパターン

  1. オーバーロードするとどうなるか
  2. 値を2つ渡すとどうなるか
  3. 値を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