小编典典

javascript的Thymeleaf编码问题(使用Spring MVC)

spring-mvc

我正在使用spring mvc + thymleaf
v3,并且在html头部分中定义的javascript中涉及某些数据时遇到编码问题。这是头部中定义的javascript:

function addtab(count) {

            var closetab = '<a href="" id="close'+count+'" class="close">&times;</a>';
            $("#tabul").append('<li id="t'+count+'" class="ntabs">Tab '+count+'&nbsp;&nbsp;'+closetab+'</li>');
            $("#tabcontent").append('<p id="c'+count+'">Tab Content '+count+'</p>');

问题是,仅用于html属性的字符串用于转义的撇号,被html编码’替换,并在由浏览器客户端接收到时导致以下结果:

function addtab(count) {

            var closetab = '<a href="" id="close&#39;+count+&#39;" class="close">&times;</a>';
            $("#tabul").append('<li id="t&#39;+count+&#39;" class="ntabs">Tab '+count+'&nbsp;&nbsp;'+closetab+'</li>');
            $("#tabcontent").append('<p id="c&#39;+count+&#39;">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>

我在胸腺或春天中对渲染页面进行编码时缺少设置吗?

我已经尝试过过滤器,但是这些过滤器仅用于输入数据,并且阅读了很多文章,但是找不到解决方案。

谢谢。


阅读 356

收藏
2020-06-01

共1个答案

小编典典

啊,本 我只是将javascript外部化到一个单独的文件中,并将其包含在通过百里香叶传递的html文件中,这解决了问题。

哎呀,这么简单的解决方案浪费了很多时间。希望这可以帮助可能遇到此问题的其他人。

2020-06-01