ajax传json或在后端经过HttpPost提交请求时,设置的Content-Type:application/json或者text/json时,request.getParameter()并不能取到对应的参数,就会致使JFinal的Controller中getPara()方法也没法取到对应的参数。我对对Final稍加改动可轻松应对json请求参数。ajax
图片.png (这是个人请求头) 图片.png (这是请求参数)
以上截图来自firebug 证实前台 js 准确无误,可是后台却接收不到requst的parameterspring
图片.pngjson
调查缘由发现原来是request无法获取到请求参数,那么对应的getpara方法天然也就没法获取到对应的请求参数;查阅资料发现springMvc中又经过注解解决这一现象。(想了解本身去百度)可是jfinal开发中忽然遇到这个问题,非常棘手,前台代码来自于bootstrap-table框架,不方便修改content-type,因此只能分析后台,经过对http请求的分析,若是,咱们锁定了request的content-type,不管什么请求的参数均可以暴力读取。因此在jfinal源码中的HttpKit中找到了以下方法。bootstrap
图片.png后端
这个时候问题也就迎刃而解了。app
下面对于该问题解决提出4种策略。框架
直接读取方法测试
咱们在controller中已知某个请求的参数会是以上类型并且无其余杂项的时候,直接 读取code
图片.png继承
图片.png
咱们经过输出发现json被读取了出来。
经过配置Handler来对这种类型数据预处理
图片.png
经过Handler预处理这种json数据而后在controller中经过获取Attr的方式获取对应的数据
图片.png
经过配置Interceptor预处理
图片.png
其余跟上一方法同样。
写BaseController,当一个项目中大量使用这种交互的时候,又不是全部成员都对这个问题很了解的时候,建议这样用
图片.png
添加这样的抽象类。让全部Controller继承BaseController而且在Controller中重载getPara系列方法,只要判断一下是否是以上类型的content-type,这样全部成员操做变量习惯不改变,问题也获得解决
图片.png
图片.png
同样输出正确结果。
关于这个问题,有想深刻探究能够自行了解HTTP协议,content-type等相关知识,博主但愿你们之后能绕过这个坑,不要像我整了一个下午,才弄明白,因此给你们分享点知识,关于这个状况没有遇到的也能够本身编写ajax请求去测试。谢谢你们观看,但愿有帮到你们哦!