上周帮同事看一个问题,是想构造一个万能的query对象,这个对象里面包含一个泛型的对象,在spring mvc的controller层想通过RequestBody直接进行转换,spring mvc的代码如下:
@RequestMapping("/testBind") @ResponseBody public String testBind(@RequestBody MgQueryCondition<TestBean> queryCondition){ System.out.println(queryCondition); return "success"; }
import java.io.Serializable; public class TestBean implements Serializable{ private Integer id; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Override public String toString() { return "TestBean [id=" + id + "]"; } }
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; public class MgQueryCondition<T> { private T model; private Integer pageNo; private Integer pageNum; public T getModel() { return model; } public void setModel(T model) { this.model = model; } public Integer getPageNo() { return pageNo; } public void setPageNo(Integer pageNo) { this.pageNo = pageNo; } public Integer getPageNum() { return pageNum; } public void setPageNum(Integer pageNum) { this.pageNum = pageNum; } @Override public String toString() { return "MgQueryCondition [model=" + model + ", pageNo=" + pageNo + ", pageNum=" + pageNum + "]"; } }
假设我们去调试的话,发现MgQueryCondition里面的数据类型是JSONObject,如果如果在调用getModel的时候就会发生类型转换问题,后来我看了下fastjson的文档。
针对泛型类型,使用TypeReference进行解析,代码如下:
public static void main(String[] args) { MgQueryCondition<TestBean> test = new MgQueryCondition<TestBean>(); TestBean testBean = new TestBean(); testBean.setId(1); test.setModel(testBean); test.setPageNo(1); test.setPageNum(1); System.out.println(JSONObject.toJSONString(test)); String json = "{\"model\":{\"id\":1},\"pageNo\":1,\"pageNum\":1}"; MgQueryCondition<TestBean> clazz = JSON.parseObject(json, new TypeReference<MgQueryCondition<TestBean>>(){}); System.out.println(clazz.getModel().getClass()); }
这样我们就无法使用@RequestBody了,所以应该使用最基本的kv结构的进行传参。
相关推荐
本篇文章主要介绍了在springmvc中解决FastJson循环引用的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
springmvc+fastjson 完整示例,下载即可运行
springMVC整合FastJson实现RestFul风格API 源代码
SpringMVC+Fastjson+Swagger集成示例完整源码Example。
SpringMVC配合Fastjson的内存马利用与分析1
NULL 博文链接:https://a243570131.iteye.com/blog/2341355
springMVC整合FastJson实现RestFul风格API涉及jar包
主要为大家详细介绍了SpringMVC接收多个对象的4种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
开发工具采用IDEA,用maven构建的项目,框架采用SpringMVC,数据库采用mysql与mybatis配合,数据格式采用阿里巴巴工具fastJson,数据源druid,另外还添加了resteasy中的功能
用来解决SpringMVC+Ajax技术中前台报406的错误信息,实现后台json格式与前台一致
SpringMVC关于json、xml自动转换的原理研究.docxSpringMVC关于json、xml自动转换的原理研究.docx
springmvc中json转换的jar,包含jackson-core-asl.jar和Jackson-mapper-asl.jar
SpringMVC数据绑定及数据类型转换 文档中付例子
springMybatis,springmvc,环绕通知,时间转换,des,md5加密账户密码.拦截器
使用springMVC作为控制器,访问某一个url将会给你返回一段xml片段。
SpringMVC 传递 和 返回对象实例 以及 zTree例子 SpringMVC 传递 和 返回对象实例 以及 zTree例子
springmvc4.2中文文档springmvc4.2中文文档springmvc4.2中文文档springmvc4.2中文文档springmvc4.
springMVC前后交互代码,聚成各种参数传递,及多对象传递等。
本篇文章主要介绍了详解SpringMVC注解@initbinder解决类型转换问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧