当前位置: 首页 > news >正文

全国十大网站建设公司排名网店怎么开视频教程

全国十大网站建设公司排名,网店怎么开视频教程,精准营销的典型案例,新网站建设服务因为最近在整理一些源码和编写规范#xff0c;这里写一下只是记录几年前自己遇到的问题#xff0c;好久都忘了#xff0c;还是写下来比较好。 问题记录#xff1a;由于变量使用了boolean#xff0c;并且变量名是is开头的#xff0c;由于java机制boolean默认是false#… 因为最近在整理一些源码和编写规范这里写一下只是记录几年前自己遇到的问题好久都忘了还是写下来比较好。 问题记录由于变量使用了boolean并且变量名是is开头的由于java机制boolean默认是false而参数传递即使为true在springmvc参数设置的时候也不会对boolea的is开头的参数做处理会导致这个值一直是false 原因跟踪当前端一个请求发过来的时候请求体是在body里面的首先java的boolean值是false 当请求打到controller里面的时候会先经过springmvc在AbstractMessageConverterMethodArgumentResolver类的方法【readWithMessageConverters】中进行设置参数具体路劲和方法如下 org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver#readWithMessageConverters(org.springframework.http.HttpInputMessage, org.springframework.core.MethodParameter, java.lang.reflect.Type)genericConverter.read做了进一步处理实际底层调用的是AbstractJackson2HttpMessageConverter类中的read方法里面获取了java类型等调用了ObjectMapper对参数做了序列化处理 接下来要看objectmapper的源码了这里find的时候是根据名字isBooleanA来获取对应的值我们看到现在是有的因为我的set方法是setIsBooleanA但是有一种情况会没有你把你的set方法改成setBooleanA就没了如下图所示 因为这里为null了所以就不会invoke参数所以你的boolean参数会一直是false因为java机制你这里不设置的话默认false如果是Boolean那么就会一直是null 问题来了_beanProperties为什么这里会拿不到为null我参数明明是有的_beanProperties是BeanPropertyMap实体 服务起来之后第一次调用接口这里会对参数做特殊处理放入到BeanPropertyMap中可以看到boolean值已经变了我参数名字是isBooleanA但是这里变成了booleanA 点的构造方法里面看了下其实就是参数无法匹配了这里把参数缓存了然后你入参请求的时候映射不上了所以是null 那么问题来了是什么原因 什么时候把isBooleanA这个变量值改为了booleanAis去哪里了呢 又是什么时候往【_properties】里面放参数的呢 _properties放值的时候是在BeanDeserializerFactory中的addBeanProps方法中进行的最下面有个builder.addProperty(prop);调用了BeanDeserializerBuilder类的addProperty方法往里面设的值 而循环用的propDefs参数来自于这里对入参参数beanDesc.findProperties()进行了特殊处理然后得到的 中间省略一万字直接找beanDesc这个参数是从哪里得到的如下所示在这里创建的 com.fasterxml.jackson.databind.deser.DeserializerCache#_createDeserializercom.fasterxml.jackson.databind.introspect.BasicClassIntrospector#_findStdTypeDesc这个方法是转换基础数据类型的实体的话是null会走得下面的if中在collectProperties方法中做了处理 这里解析出来了get set方法的前缀是什么 后面继续省略直接看核心逻辑直接定位到这里找他什么时候用反射把数据填进去的嵌套了一堆烦死了找了半天而且版本也不一样了之前我都是直接搜coll方法就有现在还得从新跟源码 终于找到了这个方法原先是coll()因为我框架版本升级了变成collectAll()了 一直到这里其实都是有的但是后面有个remove给删了就是这个方法没有匹配的数据给删了 框架都是基于反射的属性的获取和设置都是基于他的get set方法有些框架或者使用idea的自动生成get set都会有一些对参数的特殊处理比如boolean的is开头参数会自动把你的is删了这个时候由于不符合框架的规则了就会导致参数无法匹配上。 网上一大堆说怎么处理的根本原因其实在这里万物基于反射~~~
http://www.pierceye.com/news/778521/

相关文章:

  • 阿里云编辑建设好的网站凡客官网登录入口网址
  • 后盾网原创实战网站建设教程北京app网站建设价格
  • 简述网站建设过程步骤wordpress英文建站
  • 网站开发 mvc有孩子做的网站
  • 自己做的网站如何推广wordpress 主题页脚
  • 数据库型网站怎么把电脑当服务器做网站
  • 东莞网站建设品牌公司如何做电子书网站
  • 免费学做美食视频网站有哪些百度是国企还是央企
  • wordpress 网站关键词设置wordpress 上传主机
  • h5电子商务网站如何查询关键词的搜索量
  • 网站导航栏兼容性网站建设的主要技术指什么软件
  • 如何抄袭网站400靓号手机网站建设
  • 大兴网站建设价格怎样建设好网站
  • 三维家是在网站上做还是在app上国内新闻最新5条
  • 呼伦贝尔网站设计wordpress如何关闭主题
  • 苏州网站制作网站建设淮安住房和城乡建设厅网站
  • 房产中介网站wordpress模板mip
  • 汽车租赁网站怎么做沈阳网站开发程序员工资
  • 网站建设教程搭建汽岁湖南岚鸿专注交城有做网站的吗
  • 网站开发怎么连接sqlserver建设网站怎么收费标准
  • 万网网站模板购买北京南站核酸检测地点
  • 南京城乡建设网站公司做网站哪个好
  • 有没有学做衣服的网站广告设计公司有什么岗位
  • 什么网站做免单衣服厦门设计师网站
  • 深圳网站建设 龙华信科易乐自助建站
  • 徐老师在那个网站做发视频搜索引擎优化特点
  • 工信部网站备案批准文件重庆装修网站建设
  • 网站被攻击了怎么办网站优化 价格查询
  • 北京网站建设公司怎么样怎么做qq盗号网站
  • 中企动力网站建设合同中天建设招标网站