java后台controller中获取form表单提交的数据时特殊字符被转义

野渡无人舟自横 发布于 2016/09/25 09:27
阅读 4K+
收藏 0
页面form表单post提交的数据中含有“测试”,后台用
String value=request.getParameter("value");

接收时,可以正常接收到value=“测试”。但是如果这样直接写在参数里边,

@RequestMapping(value = "save")
 public void save(HttpServletRequest request,String value) {
 System.err.println(value);
 }
这样得到的value被转义成了 value= "测试"

有什么解决方法么

加载中
0
Mx_JHJ
Mx_JHJ
你如果需要那对双引号需要转译字符串
野渡无人舟自横
野渡无人舟自横
回复 @Mx_JHJ : 我用的form().submit()
Mx_JHJ
Mx_JHJ
这个吧,就要看前台用什么方式提交数据了,我一般用局部页面刷新的方式提交数据(ajax),数据格式为json格式,后台再将json转换为一个具体的实体对象就行了
野渡无人舟自横
野渡无人舟自横
因为要是一个表单有很多个字段,肯定直接这样写,save(HttpServletRequest req,Entity entity),这个entity对象里边不确定会有几个字段,不可能把每个字段都单独获取一下或者转义吧,每个请求都这样写的话太麻烦了吧
0
追梦的南瓜
追梦的南瓜
想实现怎样的效果?
野渡无人舟自横
野渡无人舟自横
回复 @追梦的南瓜 : 确实不是所有属性都允许带特殊符号,但是所有的页面肯定都会有没限制输入信息或者限制不是很严格的,应该需要考虑客户会输入特殊符号的情况吧。只能把所有的方法都改下加个转换?
野渡无人舟自横
野渡无人舟自横
回复 @追梦的南瓜 : 前台又没限制客户不能输入特殊符号啊,引号只是个拿来举个例子,像大于小于,省略号,&等各种符号都会被转义。转义虽然不影响数据展示,但是某些字段可能会造成数据库字段长度不够的问题。
追梦的南瓜
追梦的南瓜
回复 @子不语_66 : 为什么会有" "呢?你可以转义字符串,你总不会所有的属性都要带双引号吧~
野渡无人舟自横
野渡无人舟自横
我这样直接用user,里边的值如果有特殊字符会被转义,比如你想存一个“这是引号”,结果存到数据库的是 &quto;这是引号&quto;
野渡无人舟自横
野渡无人舟自横
@RequestMapping(value = "save") public void save(HttpServletRequest request,User user) { service.save(user); } 这样,我直接使用user对象而不是用request.getParameter()一个个获取再set到user里边
0
演员超
演员超

EntityDto entityDto  作为参数,需要转义的字段再重新定义。

EntityDto extends Entity

0
江江JJMaRs

碰到相同的问题~   请问楼主最后咋解决的啊?

0
混分丶小菜鸟
混分丶小菜鸟

前段向后台传输不确定字符串的时候encoder,后台decoder, 约定好字符集就可以了

0
loloven
loloven

如果不是特殊需求,最好放弃使用并屏蔽特殊字符,

而如果是特殊需求就是要保留特殊字符,可以写过滤器或AOP手动去处理。

0
织梦之魂
织梦之魂

这个是什么方式提交的不知道

返回顶部
顶部