私のプロジェクトでは、Spring MVC 3.1 で Velocity 1.7 を使用しています。以下は、ベロシティ Bean の構成方法を示すソース コードです。
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/WEB-INF/views/"/>
</bean>
<bean class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="contentType" value="UTF-8" />
<property name="prefix" value="" />
<property name="suffix" value=".vm" />
<property name="exposeSessionAttributes" value="true"/>
<property name="attributes">
<map>
<entry key="authentication">
<bean class="com.myapp.AuthenticatedUserDetails" />
</entry>
</map>
</property>
</bean>
どこでも UTF-8 エンコーディングを使用しています。ビューエンコーディングに静的テキストがある場合、完全に機能します。問題は、モデルから渡されたオブジェクトから .vm テンプレートに値を表示したい場合です。
上記では、すべての速度テンプレートに認証オブジェクトを渡します。authentication.username 値を表示するなど、認証オブジェクトをビューで使用したい場合、エンコーディングの問題があります - 特殊文字が正しく表示されません。たとえば、authentication.username の内部には「Rafał」という値がありますが、この値をビューに渡すと、表示される値は「Rafa?」になります。
誰かが同様の問題を抱えていますか?あなたの助けに本当に感謝しています。