jfinal 输出指令#( ) 遇到的问题 不过滤双引号 "

今天用户反馈一个问题, 查到最后发现是多了一个"引发的问题, 数据库中存的是 WX20171225-150250@2x.png 注意最后那个字符是 "  结果到了页面 是这样的。

WX20171225-150406@2x.png

所以前端报错了,

我html代码是这样写的:

WX20171225-150515@2x.png



评论区

JFinal

2017-12-25 15:41

多出来的双引号从哪里来的?

小毅好

2017-12-25 15:47

@JFinal 数据库里的

小毅好

2017-12-25 15:49

@小毅好 dao.findById(String id) 从数据库取出来model 在前端 使用 "#()" 指令取出来就含有这个双引号了

JFinal

2017-12-25 16:04

@小毅好 希望 jfinal 自动帮你过滤掉这个双引号?

小毅好

2017-12-25 17:14

@JFinal 其实自定义指令也能够解决的,但是 这个指令使用的地方实在太多了, 而且我觉得前端有很多情况都是这样的,
比如说: var user_name = "#(session.user.name)"; 这个很常见吧

如果 session.user.name是 jfinal"

这时 结果就是 var user_name = " jfinal""; 这种情况 前端就会报错阻止下面js代码执行,

如果去掉双引号 var user_name = #(session.user.name);
这时结果就是 var user_name = jfinal"; 前端js代码也会报错,

lyh061619

2017-12-25 17:47

你这个是微信开发的呢,要存昵称带特殊字号的是先把字段字符集设置为utf8mb4然后再存。至于多出现如 jfinal" 这样子的,拿数据代码过虑下就行了。js引用模模板参数变量是就要加双引号才能引用的正确的姿势如var user_name = "#(session.user.name)";就好了,因为两个语法解析的不同而不同。

JFinal

2017-12-25 18:01

@小毅好 关键在于 jfinal 不方便干预,如果干预相当于 jfinal 去分析你的数据内容,jfinal 是无法精确知道数据中出现的这个双引号字符用户到底要还是不要

小毅好

2017-12-25 18:11

@JFinal 明白了,我写个新的指令输出吧, 谢了大波总

热门反馈

扫码入社