前几天定义好了接口传参是boolean类型,但是今天猛然看到IOS传的竟然是0/1,这下我坐不住了,赶紧去咨询了下,原来他们一直是这样传的
而且后端用boolean类型去接,竟然是false,心想这就很奇怪了,肯定是springmvc给转的,想想springmvc又这么智能了?带着问题来看下源码吧
直接进正题,我已经找到了最终转换的地方但是用了两个小时debug,看结果吧:
StringToBooleanConverter.class里面又这么个转换
一目了然:当参数是 true,on ,yes ,1 的时候都会转换为true 当参数是 false off no 0 的时候都会转换为false
最终问题解决,debug过程太长,就不详情说了,说下最后一步转换的时候调用的是
GenericConversionService.convert方法,最终到StringToBooleanConverter
如图不知道用哪个的时候可以参考(花了我不少时间)
网友评论