您现在的位置是:网站首页 > 代码编程 > JAVA开发JAVA开发

【原】Freemarker字符串转义处理,防止引号冲突

不忘初心 不忘初心 2019-03-10 围观() 评论() 点赞() JAVA开发

简介:freemarker一直是我在模板引擎中的首选,网站在引入百度分享的时候,碰见了一个字符串转义的问题,具体表现为:后端传过来的字符串中是带有引号的,而我的变量接

freemarker一直是我在模板引擎中的首选,网站在引入百度分享的时候,碰见了一个字符串转义的问题,具体表现为:后端传过来的字符串中是带有引号的,而我的变量接受的时候,由于是字符串类型,所以我也写了引号,此时,如果后端没有做转义,直接在js中解析出来就会有问题。

这个问题,并不是我第一次碰见,之前也碰见过一次,直接用一个js变量来接收后端返回的值,由于当时用的不是freemarker模板引擎,所以不是很熟悉语法,最后不得已用了一种比较蠢的方法来处理:将文本提前解析到一个pre标签中,再拿js去获取

两次的问题都是同一个原因,特意来写一篇文章记录一下,免得自己日后再犯类似的错误,前面提到的两个问题,第二种解决方案就不多说了,今天主要来说一下第一种解决方案:利用freemarker的语法来处理

问题如下图:

Freemarker字符串转义处理,防止引号冲突

bdText变量的值,是直接由后端返回的,然后利用freemarker的el表达式获取出来,变量使用双引,而后端返回的字符串中正好也带有双引号。

可能有人会问,直接把bdText改成单引不就OK了?确实可以,但是治标不治本,万一后端返回的字符串中还带有单引,岂不完蛋。。。

其实在此之前,我已经对文本做过一次处理了,返回的字符中还可能会带有换行符“\n”,这种语法在js变量中识别不了,给他替换成空,或者替换成<br>,使用的是freemarker的replace方法,这次的问题依旧可以使用replace方法来解决:直接将字符串中的双引号替换成单引号

Freemarker字符串转义处理,防止引号冲突

具体语法如下:

${article.text?replace("\r\n", "")?replace("\"", "'")}

freemarker模板引擎

看完文章,有任何疑问,请加入群聊一起交流!!!

很赞哦! ()

文章评论

  • 请先说点什么
    人参与,条评论

请使用电脑浏览器访问本页面,使用手机浏览器访问本页面会导致下载文件异常!!!

雨落无影

关注上方公众号,回复关键字【下载】获取下载码

用完即删,每次下载需重新获取下载码

若出现下载不了的情况,请及时联系站长进行解决

站点信息

  • 网站程序:spring + freemarker
  • 主题模板:《今夕何夕》
  • 文章统计:篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们