[Seasar-user:2582] Seasar2/S2JSF 質問 プロパティが2回セットされる

eihan eihan
2005年 9月 16日 (金) 15:08:13 JST


eihanです。


Seasar2/S2JSFにて、質問があります。

以下のようなクラス/diconを作成し、同一クラスにて複数Actionを定義し、
property指定時/未指定でDtoを切り替えようと試みたのですが、
意図通りには行きませんでした。

http://www.seasar.org/DIContainer.html#AutoBindingModeの記述から
===========================
自動バインディング
プロパティが明示的に指定されている場合はそれに従います。
明示的に指定されていないプロパティで、型がインターフェースの場合は
自動的にバインドします。
===========================
プロパティを明示的に指定しているので、「hogeDto2」のインスタンスが
セットされるのかな?と解釈していたのですが、「hogeDto」「hogeDto2」
共にセットされているみたいです。
ログが2回呼ばれていましたが、変数は当然上書きされています
考え違い等ありましたらご指摘していただければと思います。

以上、ご教授お願いします。


public abstract class BaseAction {
    public String execute() {
        return process();
    }

    protected abstract String process();
}

public class HogeAction extends BaseAction {
    private HogeDto _hogeDto = null;

    protected String process() {
        return "hoge";
    }

    public void setHogeDto(HogeDto hogeDto) {
        _hogeDto = hogeDto;
    }
}

public class HogeDto {
    private int _value = 0;

    public void setValue(int value);

    public int getValue();
}

<component name="hogeAction" class="HogeAction" instance="request"/>
<component name="hogeAction2" class="HogeAction" instance="request">
  <property name="hogeDto">hogeDto2</property>
</component>
<component name="hogeDto" class="HogeDto" instance="session">
  <property name="value">1</property>
</component>
<component name="hogeDto2" class="HogeDto" instance="session">
  <property name="value">2</property>
</component>





Seasar-user メーリングリストの案内