DTO が DI されない

今回も社内ツール作ってて気がついたこと。


ユーザ情報を格納しておくような DTO を作って、インスタンスはセッション固有で持ち回りたいなと思ったので、下のようなコード書いたんですよ。

@Component(instance = InstanceType.SESSION)
public class UserDto implements Serializable {

    private static final long serialVersionUID = 1L;

    String userId;

    // getter/setter 省略

}
public class TestPage {

    UserDto dto;

    String userId;

    public Class prerender() {
        userId = dto.getUserId();
        return null;
    }

    // getter/setter とか省略

}

Seasar の ML でも過去に DTO をセッションに乗っけるとかいう話もあるし、うまくいくんじゃないかなと思ってやったんですが…
ぬるぽで落ちました\(^o^)/


なんか DI されてないっぽいんですが・・・このやり方って実はおかしいんでしょうか?
ちなみに @Binding(bindingType = BindingType.MUST) してやると、

org.seasar.framework.container.IllegalAutoBindingPropertyRuntimeException: [ESSR0080]クラス(test.web.test.TestPage$$EnhancedByS2AOP$$1944ae)のプロパティ(dto)の自動設定に失敗しました
	at org.seasar.framework.container.assembler.BindingTypeMustDef.doBind(BindingTypeMustDef.java:46)
	at org.seasar.framework.container.assembler.AbstractBindingTypeDef.bind(AbstractBindingTypeDef.java:91)
	at org.seasar.framework.container.assembler.AccessTypeFieldDef.bind(AccessTypeFieldDef.java:50)
	at org.seasar.framework.container.assembler.AccessTypeFieldDef.bind(AccessTypeFieldDef.java:42)
	at org.seasar.framework.container.assembler.AutoPropertyAssembler.assemble(AutoPropertyAssembler.java:55)
	at org.seasar.framework.container.deployer.RequestComponentDeployer.deploy(RequestComponentDeployer.java:67)
	at org.seasar.framework.container.impl.ComponentDefImpl.getComponent(ComponentDefImpl.java:111)
	at org.seasar.framework.container.impl.S2ContainerImpl.getComponent(S2ContainerImpl.java:129)
	at org.seasar.teeda.core.util.DIContainerUtil.getComponent(DIContainerUtil.java:53)
	at org.seasar.teeda.extension.html.impl.HtmlComponentInvokerImpl.invoke(HtmlComponentInvokerImpl.java:154)
	at org.seasar.teeda.extension.html.impl.HtmlComponentInvokerImpl.invokeInitialize(HtmlComponentInvokerImpl.java:130)
	at org.seasar.teeda.extension.render.TViewRootRenderer.invoke(TViewRootRenderer.java:303)
	at org.seasar.teeda.extension.render.TViewRootRenderer.encodeBegin(TViewRootRenderer.java:140)
	at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:330)
(以下省略)

って出ます。


あ、環境はついさっきリリースされた Seasar 2.4.18-rc4 です。
会社では Seasar 2.4.18-rc2 でも出ました。