和Spring MVC打交道的遇错经验
来源:互联网 发布:java disruptor 教程 编辑:程序博客网 时间:2024/06/05 03:32
- Spring 400 Bad Request
报错:浏览器用ajax的POST请求到Spring后台报错400 (Bad Request)
原因:出现这个错误的原因一般最常见的就是后台的实体类bean与前台传过来的类型不匹配,我的是后台某个String类型的参数在前台js传过来时没有用引号“”包裹,导致前后台类型不匹配。
解决:针对我的情况,我将该参数用“”包裹后成功传到后台匹配。
其他这个错误的情况参考下面这篇博文:SpringMVC中出现” 400 Bad Request “错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- String类型参数直接用@RequestBody注解会报解析错误
报错:xxx方法(@RequestBody String id)
会报错
解决:可以用xxx(@RequestBody Map<String, Object> datas)
,然后从datas中获取参数值datas.get("id")
,再转换相应类型。
- Mybatis关联查询延迟加载报错
报错:
com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory$EnhancedResultObjectProxyImpl and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) )
原因:使用mybatis的<collection>
或<association>
标签时,存在“延迟加载”这个概念。 如果一个实体类的某个属性是其它实体类的类型,且项目中使用了延迟加载(mybatis默认使用了 延迟加载),这就会出现在处理类时,它的属性还没有被序列化,导致如上bug的出现。
解决:
在主动关联的实体类(并非是作为属性的实体类 )的类头(接口头)上加上@JsonIgnoreProperties(value = {"handler"})
注解
如在下面例子中的Recommend类上加注解:
<resultMap type="com.zz.model.Recommend" id="mRecommend"> <id property="id" column="rec_id"/> <result property="title" column="rec_title"/> <association property="user" javaType="com.zz.model.Muser" column="rec_userId" select="getMuser"> </association> </resultMap>
//json序列化时忽略bean中的一些属性序列化和反序列化时抛出的异常@JsonIgnoreProperties(value = {"handler"})@TableName("recommend")public class Recommend implements Serializable { …… /** * @备注:推荐人id * @字段:user_id BIGINT(19) */ private java.lang.Long userId; /** * 备注:推荐人(并非数据库中的字段) */ @TableField(exist = false) ……}
其他解法(自定义 com.fasterxml.jackson.databind.ObjectMapper 类):
Spring MVC 解决 Could not write JSON: No serializer found for class java.lang.Object
Spring and jackson, how to disable FAIL_ON_EMPTY_BEANS through @ResponseBody
- 前台传日期字符串到SpringMVC报400错误
解决:加入对应格式(如yyyy-MM-dd HH:mm:ss)的时间格式化注解@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss" )
/** * @备注:开始日期 * @字段:start_date DATETIME(19) */ @JsonSerialize(using=DateJsonSerializer.class) @JsonDeserialize(using=DateJsonDeserializer.class) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss" ) private java.util.Date startDate; /** * @备注:结束日期 * @字段:end_date DATETIME(19) */ @JsonSerialize(using=DateJsonSerializer.class) @JsonDeserialize(using=DateJsonDeserializer.class) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss" ) private java.util.Date endDate;
阅读全文
0 0
- 和Spring MVC打交道的遇错经验
- 和领导打交道的原则
- 关于Spring MVC的一个经验
- 驱动你的串口 和寄存器打交道
- 和程序员打交道的十大禁忌
- 和程序员打交道的十大禁忌
- 和无人机打交道一个多月来的”心路历程“
- 和程序员打交道的十大禁忌
- 和死物打交道的不会比跟活物打交道的发展更远大
- Spring和spring MVC,spring MVC和Strut2的区别
- Spring MVC和Struts2 MVC的区别
- spring mvc 和struct mvc 的区别
- Spring MVC 和 struts MVC的区别。
- spring mvc 控制器方法传数组对象的一些经验
- Spring mvc / 和 /*的区别
- spring和MVC的区别
- 又一次和政府打交道
- 不要和穷人打交道
- CF 13E Holes (块状链表)
- HDU 6082 度度熊与邪恶大魔王
- ACM暑假集训日记 17.8.14
- android 权限
- Day29
- 和Spring MVC打交道的遇错经验
- 【支付系统学习笔记】-二支付系统设计(支付产品设计)
- hive join
- 反射
- 【caffe-Windows_1】caffe+VS2013+Windows无GPU快速配置教程
- 2017年校招全国统一模拟笔试(第五场)编程题集合(Javascript版)
- Day30
- 关于辗转相除法
- js关于document和window对象