My favorites | Sign in
t-2
Project Home Downloads Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
  Advanced search   Search tips   Subscriptions
Issue 185: @Varでオーバーロードすると@Varの少ないほうのメソッドが効かずに@Defaultが呼び出される
1 person starred this issue and may be notified of changes. Back to list
Status:  Fixed
Owner:  shinpei.ohtani@gmail.com
Closed:  Apr 2009


 
Project Member Reported by shinpei.ohtani@gmail.com, Mar 9, 2009

以下のように@Varでオーバロードメソッドがある場合に
適切なメソッドが呼び出されず、@Defaultが呼ばれてしまう。

まずは現状調査から。

{{{
@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();
	}
}
}}}
Mar 9, 2009
Project Member #1 shinpei.ohtani@gmail.com
(No comment was entered for this change.)
Labels: -Mileston-T2-0.5.2 Milestone-T2-0.5.2
Apr 8, 2009
Project Member #2 shinpei.ohtani@gmail.com

メソッドの呼び出し順序を以下のように規定しました。
 * 同一の深さ(/hoge/foo, /hoge/{moge})の場合、式言語が入ったパスより、固定のパスを優
先する
 * テンプレート指定されているパスが長いほうから呼び出される。テンプレート指定とは
@ActionPath("/hoge/foo/bar")のような場合。
 * メソッド名をパスとして使う場合は、パスとしての優先度は低くなる
 * テンプレートパスが同じ場合、またはメソッド名と使おうとしている場合、アクションアノ
テーションのついている数が多いほうが先に呼ばれる
 * デフォルトメソッドは呼ばれる優先度が最も低い

このような修正をr3491にて入れました。
Status: Fixed
Jun 17, 2009
Project Member #3 shinpei.ohtani@gmail.com
参照先が間違ってました。
r3489が正しいです。失礼しました。

Powered by Google Project Hosting