2012-03-21 17 views
2

私はSpringには新しく、UIレイヤの解析と値の印刷にSpring Formatting SPIを使用しようとしています。Spring Formatting SPIではJSPタグを使用する必要がありますか?

私は、カスタムフォーマッタを定義したと解析側が正しく動作していると私は直接conversionService.convert(someObject, String.class)呼び出しを行う場合、その値は、私が定義したフォーマッタを使用して正しく(すなわち印刷()ED)に変換されます。

しかし、私のテンプレートでは、登録されているconversionService.convert()呼び出しの文字列ではなく、オブジェクトのtoString()表現が表示されています。

VelocityやFreemarker(神に感謝)ではなく、テンプレートエンジンとしてMustacheを使用しています。書式設定SPIはJSPタグに結びついていますか?あるいは、これが正しく動作するためにSpringバインド/フォームタグをサポートするために使用しているMustacheライブラリを拡張する必要がありますか?

私はドキュメントを精査して、これで何か情報を見つけることができませんでしたが、私のRTFM/Googleのスキルが不足している場合には謝罪します。あなたがその口ひげ春のライブラリを見るためのpom.xmlファイルを見れば、それはMustache.javaを使用していないすべての

+0

MustacheとSpring MVCをどのように統合するかについていくつかの詳細を教えてください。あなたは何とかmustache.jsを使用していますか、それともJavaポートを使用していますか? – sdouglass

+0

私たちはmustache.java(https://github.com/spullara/mustache.java)と適切に再利用された口ひげの春の表示(https://github.com/sps/mustache-spring-view)を使用しています。 – Walden

答えて

1

まず、それが実際にJmustacheを使用しています:

https://github.com/sps/mustache-spring-view/blob/master/pom.xml

<dependency> 
    <groupId>com.samskivert</groupId> 
    <artifactId>jmustache</artifactId> 
    <version>${jmustache.version}</version> 
</dependency> 

することができますJmustacheをここで見つける:

https://github.com/samskivert/jmustache

ビューは単なる地図としてあなたのモデルを渡し< String、Object >をJmustacheテンプレートの "execute()"メソッドに追加すると、その時点以降、Springはもう関与しません。その時点で、Jmustacheはテンプレート構文とモデル値を使って出力を生成する方法を理解しています。 Mustacheクラスで定義されている "Template.Segment"サブクラスを見ると、Object値がString.valueOf(Object)を使用してStringに変換されるところがわかります。行に568:

https://github.com/samskivert/jmustache/blob/master/src/main/java/com/samskivert/mustache/Mustache.java

String.valueOf(オブジェクト)だけで()(それがnullではない場合)に渡されたオブジェクト上のtoStringを呼び出します。

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#valueOf%28java.lang.Object%29

私はあなたがたと思います2つのオプションがあります。モデルにデータを入力する前に、コントローラ内のすべてのStringコンバージョンを処理して、モデルにString値のみを設定してください。または、Jmustacheコードを拡張または変更して、Springの変換APIを使用してString.valueOf()を使用する代わりに文字列への変換を処理できるようにすることができます。

+0

実際にはmustache.javaを使用するspsに基づいて独自の口ひげの春のビューを作成しましたが、あなたの答えはその実装にも適用されます。ありがとう。 – Walden

関連する問題