1

私は非常に一般的なSpringメッセージの問題に直面していますが、これまでのところ簡単な解決策はありません.

現在の Spring MVC アプリケーションには、javascript アラートでスペイン語のアクセント文字を適切に表示するという問題があります。アラート メッセージは次のように表示されます。

Por favor elija la fecha de aplicación

しかし、次のように表示されるはずです:

Por favor elija la fecha de aplicación

上記のメッセージは、ユーザーが検証に失敗したときにポップアップ表示され、JavaScript によって処理されます。

alert("<spring:message code='message_miss_duedate' />");

しかし、スペイン語の文字列全体をjavascriptに入れると:

alert("Por favor elija la fecha de aplicación");

出力は問題ありません。

この問題の原因は明らかです。これ&Xacute;は、Spring メッセージのメソッドによって生成され、スペイン語のアクセント文字を HTML に適したコードに変換します。このコードは、html で解析すると正常に動作しますが、そのようなコードは JavaScript で認識されません。

これまでのところ、「EncodingFilter」は UTF-8 に設定されています

<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>

pom設定と同じ:

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

では、Spring メッセージを使用するときに、Spring によるアクセント文字の変換をスキップする方法はありますか? ありがとう。

4

1 に答える 1

0

アップデート

解決策は非常に簡単です。で使用htmlEscape="false"spring:messageます。デフォルトでは、値はtrueエスケープ文字です

それで

alert('<spring:message code="message_miss_duedate" htmlEscape="false"/>');

ポップアップメッセージがきれいに見えるようになりました。

更新終了

現在、回避策がありますが、制限があるため解決策はありません。一般的な解決策が見つかるまで、このスレッドを開いたままにします。

コントローラで SpringMessageSourceオブジェクトを使用してアラート メッセージを に渡しますuiModel

Locale currentLocale = LocaleContextHolder.getLocale();
uiModel.addAttribute("message_miss_duedate", messageSource.getMessage("message_miss_duedate", null, currentLocale));

したがって、javascript では、通常の JSTL 変数のようにメッセージを取得できます。

alert("${message_miss_duedate}");

しかし、このアプローチを制限として述べたように、ランタイム応答メッセージを変数、特にコード テンプレートで処理するのは難しいためです。

于 2013-07-11T15:10:38.100 に答える