【发布时间】:2013-07-10 16:12:00
【问题描述】:
我面临一个很普遍的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 的重音字符转换?谢谢。
【问题讨论】:
-
客户端警报中的消息是什么样的?
-
@nif 谢谢,消息看起来就像消息中描述的那样,它应该看起来像:“Por喜爱elija la fecha de aplicación”,但是,javascript 无法解释它。跨度>
-
@nif 我做了一些更改,现在 javascript 警报仍然存在问题,但看起来不同。
-
尝试在消息中直接使用 UTF-8 字符或使用
&#nnnn;对其进行编码 - AFAIK,XHTML 不支持 HTML 实体。 -
@nif 谢谢我们有一个相对简单的解决方案,我已经更新了整篇文章,希望能帮助你更多地了解正在发生的事情。
标签: spring jsp jakarta-ee spring-mvc encoding