Uploaded image for project: 'Ymir'
  1. Ymir
  2. YMIR-298

PageクラスのBaseにアクションやプロパティのStaticFinal定義を追加

XMLWordPrintable

    • Type: Icon: Improvement Improvement
    • Resolution: Fixed
    • Priority: Icon: Major Major
    • 1.0.2
    • 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;
      }
      

            Assignee:
            skirnir skirnir
            Reporter:
            jflute jflute
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: