Spring MVC 3.1.1でビルドされたTomcat Webアプリケーションでエンコードの問題を悩まされています。 Freemarkerのスプリングマクロを介してばねによって結合Spring MVC freemarkerデータバインド文字エンコードを無効にする
通報
フォーム入力フィールドの値は、ISO-8859-1の代わりにUTF-8としてデコードされます。
現在の設定
私は、UTF-8のすべてをエンコードするFreeMarkerのを設定しています。
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/templates/" />
<property name="freemarkerSettings">
<props>
<prop key="auto_import">spring.ftl as spring</prop>
<prop key="url_escaping_charset">UTF-8</prop>
</props>
</property>
</bean>
ここに、web.xmlファイルの文字エンコードフィルタの設定を示します。
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
HTMLマークアップヘッドタグが含まれています
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
UTF-8エンコーディングのような値を形成するためにバインドされたデータを除いて、私のFreeMarkerのビューに戻ってくるデータを表示するための素晴らしい作品以下の入力。
私の知る限り<form id="main-search-form" action="search" method="GET">
<@spring.formInput 'searchForm.q' 'id="q" maxlength="2048" autocomplete="off" spellcheck="false"'/>
</form>
、およびインターネット上で読書の時間を実行した後、それはほとんどの場合、ISO-8859-1に春のデフォルトのように思えるが、私は変化に上書きするBeanを発見していませんバインドされたデータのデコードのタイプHTTPリクエストがUTF-8でエンコードされ、TomcatコンテナのConnectorノードがURIEncode = "UTF-8"に設定されている場合でも、SpringはISO-8859-1でデコードしようとします。
ご協力いただければ幸いです。