Slim3 JSP で f:h Text#getValue() は使えない

Text型で保存されたデータをいつ String 型に変換するかを悩み、他の人はどうしているのか調べてみたところ、

higayasuo 2009/06/28 10:06
後、r297でf:hでもText#getValue()を呼び出すように修正しました。

http://d.hatena.ne.jp/suzune64/20090627/1246110579#c1246151209

と書かれていたので、試してみたところ、エラーが発生する。*1
確かに、Javadoc にも

Encodes the input object. If the object is a string, it is escaped as HTML. If the object is a key, it is encoded as Base64. Anything else is converted to a string using toString() method.

http://slim3.googlecode.com/svn/trunk/slim3/javadoc/

と書かれているだけで、Text#getValue() については触れられていない。
他の人の解決方法では、Model クラスで型変換を実装している人が多いようだ。
Text 型のプロパティを返すための便宜上の String 型のプロパティを用意して、getter で値を取得する際に Text 型に変換して値を渡すという方法だ。

    private Text text;
    private String string;

    public void setText(Text text) {
        this.text = text
    }

    public Text getText() {
        return text;
    }

    public String getString() {
        return (null == text) ? null : text.getValue();
    }

この JSP の Text#getValue() は一度実装されたけれども、実装を削除されたのだと思うが、その改訂履歴が見つからなかったのと、他に f:h(Text#getValue()) でコードを書いているサンプルが見つからなかったので、随分前に実装が変更されていのだろうと思う。

追記

ここまで書いて思ったのが、仮に Text#getValue() の実装は、

${f:h(text.getValue())}

だったのだろうか。それとも

${f:h(text).getValue()}

だったのだろうか。

*1:上記の文を見つける前にダメもとで既に試していたので、エラーが発生することは予想済みだった。