-
Type: Improvement
-
Resolution: Fixed
-
Priority: Major
-
Affects Version/s: 1.0.0
-
Component/s: ymir-extension
-
None
【概要】
例えば、Conversation:
@In(scopeClass = ConversationScope.class, actionName = "_get") public void setCondition(ConditionDto condition) { this.condition = condition; }
というように、actionNameに「_get」と指定したりしますが、
これはタイプセーフではなく、メソッドの変更などあったさいに追従できない。
アクションやプロパティは基本的に必ずPageクラスのBaseに定義されているため、
一緒に、アクションやプロパティのStaticFinal定義を追加してしまえば、
こういったアノテーション内での指定がタイプセーフになる。
// 例えば、PageクラスのBaseに「String ACT_get = "_get"」と定義されていれば @In(scopeClass = ConversationScope.class, actionName = ACT_get) public void setCondition(ConditionDto condition) { this.condition = condition; }
Conversationだけでなく、バリデーションなどアクションやプロパティを
アノテーション内で指定することは多いと思われ、
Ymirにとって非常に価値の高い仕様になる。
StringのStaticFinalでなく、独自のクラスの定義にしてもいいかも。
// 例えば、PageクラスのBaseに「Action ACT_get = "_get"」と定義されていれば。 // そして、@Inには「Action[] action」という属性を追加。 @In(scopeClass = ConversationScope.class, action = ACT_get) public void setCondition(ConditionDto condition) { this.condition = condition; }