我正在使用 spring mvc + thymleaf v3,并且在 html head 部分定义的 javascript 中的某些数据时遇到编码问题。这是 head 中定义的 javascript:
function addtab(count) {
var closetab = '<a href="" id="close'+count+'" class="close">×</a>';
$("#tabul").append('<li id="t'+count+'" class="ntabs">Tab '+count+' '+closetab+'</li>');
$("#tabcontent").append('<p id="c'+count+'">Tab Content '+count+'</p>');
问题在于,仅用于转义 html 属性字符串的撇号,被 html 编码 ' 替换,并在浏览器客户端接收时产生以下结果:
function addtab(count) {
var closetab = '<a href="" id="close'+count+'" class="close">×</a>';
$("#tabul").append('<li id="t'+count+'" class="ntabs">Tab '+count+' '+closetab+'</li>');
$("#tabcontent").append('<p id="c'+count+'">Tab Content '+count+'</p>');
请注意,只有 html 属性值撇号已被 html 编码,html 标签的值部分中的撇号是可以的。
这是我的 web-servlet 部分,其中包含 thymeleaf 的配置:
<beans:bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".html" />
<beans:property name="characterEncoding" value="UTF-8" />
<beans:property name="templateMode" value="HTML5" />
</beans:bean>
<beans:bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
<beans:property name="templateResolver" ref="templateResolver" />
</beans:bean>
<beans:bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">
<beans:property name="templateEngine" ref="templateEngine" />
<beans:property name="characterEncoding" value="UTF-8" />
<beans:property name="contentType" value="text/html; charset=UTF-8" />
</beans:bean>
关于 thymleaf 或 spring 中用于渲染页面编码的设置,我是否缺少某些内容?
我尝试过过滤器,但这些仅适用于传入数据,并且已阅读很多帖子,但无法找到解决方案。
谢谢。
最佳答案
啊本tbnk。我只是将 javascript 外部化在一个单独的文件中,并将其包含在通过 thymeleaf 传递的 html 文件中,这解决了问题。
哎呀,这么简单的解决方案浪费了很多时间。希望这可以帮助其他可能遇到此问题的人。
关于javascript - javascript 的 Thymeleaf 编码问题(使用 spring mvc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20306870/