スーパークラスのフィールドに記述した Converter が反映されない件

Teeda を使って開発しているとき、共通のフィールドなんかを抽象クラスとしてまとめて書いたりして、この抽象クラスを継承して個々の Page クラスを作ったりするわけですが、前々からフィールドに書いた Converter が適用されないなって思っていたんですよ。

public abstract class AbstractPage {
    @DateTimeConverter(pattern = "yyyy/MM/dd HH:mm:ss")
    public Date date;
}

public class HogePage extends AbstractPage {
}

この状態で、hoge.html へアクセスしても、date の値を表示したときはデフォルトの「yyyy/MM/dd」形式でしか表示されないわけです。
下記のように getter を用意して、こいつに対して Converter をかけると期待した表示になったりします。

public class HogePage extends AbstractPage {
    @DateTimeConverter(pattern = "yyyy/MM/dd HH:mm:ss")
    public Date getDate() {
        return this.date;
    }
}

しかし、このためだけにわざわざ getter を用意するのは冗長だし、やっぱりフィールドに Converter をかけるだけでうまく動かしたい!ということで、Teeda の下記クラスをちょこっといじってみました。

package org.seasar.teeda.extension.annotation.handler;

// import文省略

public class ConstantConverterAnnotationHandler extends AbstractConverterAnnotationHandler {
    protected void processFields(S2Container container, Class componentClass, String componentName, NamingConvention namingConvention, BeanDesc beanDesc) {
        Field[] fields = componentClass.getDeclaredFields();
        for (int i = 0; i < fields.length; ++i) {
            processField(container, componentClass, componentName, namingConvention, beanDesc, fields[i]);
        }

        // ここから追加
        for (Class clazz = componentClass; (clazz = clazz.getSuperclass()) != null;) {
            fields = clazz.getDeclaredFields();
            for (int i = 0; i < fields.length; ++i) {
                processField(container, componentClass, componentName, namingConvention, beanDesc, fields[i]);
            }
        }
        // ここまで追加
    }

    // 以下省略
}

こんな感じに改変して動かしてみると、スーパークラスにかけた Converter もばっちり識別してくれました!って話。
これを取り入れてくれたりとか・・・はしてくれないですかね?