我正在使用spring mvc + thymleaf v3,并且在html头部分中定义的javascript中涉及某些数据时遇到编码问题。这是头部中定义的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标记的value部分中的撇号是可以的。
这是我的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>
我在胸腺或春天中对渲染页面进行编码时缺少设置吗?
我已经尝试过过滤器,但是这些过滤器仅用于输入数据,并且阅读了很多文章,但是找不到解决方案。
谢谢。
啊,本 我只是将javascript外部化到一个单独的文件中,并将其包含在通过百里香叶传递的html文件中,这解决了问题。
哎呀,这么简单的解决方案浪费了很多时间。希望这可以帮助可能遇到此问题的其他人。