I18N charset Encoding Spring-JSP

2019-09-02 19:40发布

I'm trying to show é as a title of my form:input field, and I can't get it working.

Example 1 :

<form:input type="text" path="something" title="é"/>

Output :

enter image description here

Example 2 :

<input type="text" title="<spring:message code="mySpecialChar" />"/>

Output :

enter image description here

Example 3 :

<form:input type="text" path="something" title="<spring:message code="mySpecialChar" />"/>

Output :

Error, I'm not allowed to do that, to solve this, I've tried Example 4.

Example 4 :

<spring:message code=mySpecialChar" var="mySpecialChar"/>
<form:input type="text" path="something" title="${mySpecialChar}"/>

Output :

Example 4

How can I get my Example 4 working properly ?

2条回答
我欲成王,谁敢阻挡
2楼-- · 2019-09-02 20:17

After a quick search, I've found that I have to add htmlEscape="false" to my <spring:message> tag.

Spring:message docs

查看更多
倾城 Initia
3楼-- · 2019-09-02 20:42

You would need to unescape your value in a Controller, first thing you would have to autowire your MessageSource

@Autowired
private MessageSource messageSource;

than you can unescape using e.g. StringEscapeUtils

 String message = messageSource.getMessage("mySpecialChar", null, Locale.getDefault());
 model.addAttribute("mySpecialChar", StringEscapeUtils.unescapeHtml([YOUR VALUE]));

than just

<form:input type="text" path="something" title="${mySpecialChar}"/>
查看更多
登录 后发表回答