当前位置: 首页 > 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.zqtcl.cn/news/778521/

相关文章:

  • 什么网站了解国家建设的行情如何建设自己的php网站
  • 大连市平台网站外包公司和劳务派遣
  • 广州建网站公司排名嵌入式软件开发工程师工作内容
  • 计算机软件网站建设免费asp网站源码
  • 网站建设介绍ppt镇江网站搜索引擎优化
  • 珠海自助建站软件泉州网站开发
  • ios个人开发者账号多少钱拼多多seo怎么优化
  • 五金网站建设信息产业部备案网站
  • 网站被百度惩罚放弃互联网平台宣传推广方案
  • 自己怎么做网站首页自动app优化
  • 图形设计网站泉州网站建设企业
  • 免费建各种网站有没有做网站的团队
  • 做网站做网站的公司电商网站怎么做
  • 福建专业网站建设公司《设计》韩国
  • 怎么区分网站是模板做的Wordpress福利资源模板
  • 文案类的网站最新域名网站
  • 网站seo优化效果智能营销系统开发
  • 国外做储物的网站个人网站建设在哪里
  • 北京高端网站设计外包公司不用代码做网站的工具
  • 网站开发交付资料广告设计公司经营范围
  • 如何建立一个好的网站wordpress 看不到主题
  • 古典网站织梦模板云南app软件开发
  • 网页设计与网站建设期末考试wordpress文章页面图片自动适应
  • 网站建设费要交印花税吗国内ui网站
  • wordpress安装在本地专业seo网络推广
  • 农庄网站模板网络文化经营许可证图片
  • 微信做模板下载网站有哪些内容江苏省常州建设高等职业技术学校网站
  • 网站开发补充合同范本docker 部署wordpress
  • 学会了php的语法怎么做网站海外推广媒体
  • 东莞网站建设排行企业网站开发公司大全