前端传入的参数实体中,有时候会出现传入了一空格,导致操作失败,这时就可以利用java反射机制去除实体中类型为sting的属性值中的空格。  

  java代码示例:

  1. package com.spyang.util;
  2.  
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.assertj.core.util.Lists;
  5.  
  6. import java.lang.reflect.Field;
  7. import java.lang.reflect.Method;
  8. import java.util.List;
  9.  
  10. /**
  11. * 功能描述: 将类中的类型为'String'的属性值中的空格去掉
  12. *
  13. * @author shuangping.yang
  14. * @version 1.0
  15. * @ClassName BeanUtil
  16. * @date 2020-9-10
  17. */
  18. @Slf4j
  19. public class TrimBeanUtil {
  20.  
  21. private static final String JAVA_TYPE = "java.lang.String";
  22. private static final String GET = "get";
  23. private static final String SET = "set";
  24.  
  25. /**
  26. * 循环去除每个字段的空格
  27. *
  28. * @param bean 实体
  29. */
  30. public static void beanAttributeValueTrim(Object bean) {
  31. if (bean != null) {
  32. //获取所有的字段包括public,private,protected,private
  33. List<Field> fieldList = Lists.newArrayList(bean.getClass().getDeclaredFields());
  34. fieldList.stream().forEach(field -> {
  35. //判断每个字段是否是sting类型,只有是string类型时才能去除前后空格
  36. if (JAVA_TYPE.equals(field.getType().getName())) {
  37. //获取每个字段的字段名
  38. String fieldName = field.getName();
  39. try {
  40. //利用java反射机制获取对应字段的值
  41. Object value = getFieldValue(bean, fieldName);
  42. if (null != value) {
  43. // 同样利用java 反射机制将修改后的值进行赋值
  44. setFieldValue(bean, fieldName, value.toString());
  45. }
  46. } catch (Exception e) {
  47. log.error("field conversion error ===>name{},msg{}", fieldName, e);
  48. }
  49. }
  50. });
  51. }
  52. }
  53.  
  54. /**
  55. * 利用反射通过get方法获取bean中字段fieldName的值
  56. *
  57. * @param bean 实体
  58. * @param fieldName 字段
  59. * @return object 对应值
  60. * @throws Exception
  61. */
  62. private static Object getFieldValue(Object bean, String fieldName) throws Exception {
  63. Method method;
  64. // 获取对应字段的get方法名称,首字母改为大写: getName
  65. StringBuffer methodName = new StringBuffer();
  66. methodName.append(GET).append(fieldName.substring(0, 1).toUpperCase())
  67. .append(fieldName.substring(1));
  68. //获取对应的方法
  69. method = bean.getClass().getMethod(methodName.toString(), new Class[0]);
  70. return method.invoke(bean);
  71. }
  72.  
  73. /**
  74. * 利用发射调用bean.set方法将value设置到字段
  75. *
  76. * @param bean 实体
  77. * @param fieldName 字段
  78. * @param fieldValue 赋值
  79. * @throws Exception
  80. */
  81. private static void setFieldValue(Object bean, String fieldName, String fieldValue) throws Exception {
  82. Class[] classArr = new Class[1];
  83. StringBuffer methodName = new StringBuffer();
  84. // 获取对应字段的set方法名称,首字母改为大写:setName
  85. methodName.append(SET).append(fieldName.substring(0, 1).toUpperCase())
  86. .append(fieldName.substring(1));
  87. //利用发射调用bean.set方法将value设置到字段
  88. classArr[0] = JAVA_TYPE.getClass();
  89. Method method = bean.getClass().getMethod(methodName.toString(), classArr);
  90. method.invoke(bean, fieldValue.trim());
  91. }
  92. } 

  1. package com.spyang.entiy;
  2.  
  3. /**
  4. * @author shuangping.yang
  5. * @version 1.0
  6. * @ClassName Demo
  7. * @date 2020.09.10 上午 11:37
  8. */
  9. public class Demo {
  10. private String name;
  11. private String gender;
  12. private Integer age;
  13.  
  14. public String getName() {
  15. return name;
  16. }
  17.  
  18. public void setName(String name) {
  19. this.name = name;
  20. }
  21.  
  22. public String getGender() {
  23. return gender;
  24. }
  25.  
  26. public void setGender(String gender) {
  27. this.gender = gender;
  28. }
  29.  
  30. public Integer getAge() {
  31. return age;
  32. }
  33.  
  34. public void setAge(Integer age) {
  35. this.age = age;
  36. }
  37.  
  38. @Override
  39. public String toString() {
  40. return "Demo{" +
  41. "name='" + name + '\'' +
  42. ", gender='" + gender + '\'' +
  43. ", age=" + age +
  44. '}';
  45. }
  46. }

实体类

  1. public static void main(String[] args) {
  2. Demo demo = new Demo();
  3. demo.setName(" shuangping.yang\t ");
  4. demo.setGender(" 男 ");
  5. demo.setAge(20);
  6. beanAttributeValueTrim(demo);
  7. System.out.println("实体:" + demo.toString());
  8. }

例子

以上是本文的全部内容,希望对大家的学习有所帮助,也希望能得到大家支持。

JAVA 去除实体中类型为string的属性值中的空格的更多相关文章

  1. 使用innerHTML获取HTML代码时,HTML标记属性的双引号好多都消失不见了,原来是属性值中包含空格才会保留双引号

    最近搞的一个项目中所使用的方式比较奇怪,用Label显示HTML内容,然后不断地使用JS把Label的innerHTML复制到TextBox中. 但是,昨天发现了一个问题,获取元素值的时候,有时候正常 ...

  2. js sort方法根据数组中对象的某一个属性值进行排序(实用方法)

    js sort方法根据数组中对象的某一个属性值进行排序 sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [ {nam ...

  3. C# 反射获取属性值、名称、类型以及集合的属性值、类型名称

    实体类 class Product { public string Id { get; set; } public string Name { get; set; } public List<P ...

  4. java正则表达式获取指定HTML标签的指定属性值

    package com.mmq.regex; import java.util.ArrayList; import java.util.List; import java.util.regex.Mat ...

  5. js中attr 与find 获取属性值,

    一.attr的用法 1. attr(属性名)        //获取属性的值(取得第一个匹配元素的属性值.通过这个方法可以方便地从第一个匹配元素中获取一个属性的值.如果元素没有相应属性,则返回 und ...

  6. android中GridView关于间距的属性值介绍

    android:columnWidth  设置列的宽度.关联的方法为:setColumnWidth(int)  stretchMode属性值的作用是设置GridView中的条目以什么缩放模式去填充空间 ...

  7. js sort方法根据数组中对象的某一个属性值进行排序

    sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [ {name:'zopp',age:0}, {name:'gpp' ...

  8. jquery中选择块并改变属性值的方法

    本文为大家介绍下使用jquery改变class属性的值,通过removeClass.addClass实现,具体如下,感兴趣的朋友可以学习下jquery改变class属性的值 $("#top_ ...

  9. href标签中target的几个属性值

    没有指定<a>的target属性值时,默认是"_blank,可以参考以下代码的设置来控制<a href="#" target="_blank& ...

随机推荐

  1. 2020-07-02:在浏览器输入一个url后按回车,会发生什么?

    福哥答案2020-07-02: 简单回答: 域名解析. 建立TCP连接. 请求. 处理. 响应. 释放TCP连接. 页面渲染. 中级回答: 域名解析 浏览器DNS缓存. 操作系统DNS缓存. 路由器缓 ...

  2. 2020-04-08:为什么TCP握手需要三次?

    假想一下,如果我们去掉了第三次呢?如果只是第二次建立的话,服务端和客户端就已经建立,但是如果客户端没有收到服务端的回应?这个时候,客户端认为没有建立,服务端却为认为建立成功,并保存了必要的资源,如果出 ...

  3. 谈谈代码评审(code review)

    什么是代码评审(code review)? 根据维基百科的定义,代码评审是一种通过若干人员检阅源代码方式来进行的软件质量保证活动.根据软件工程的经典理论,代码评审应该是收益很高的活动,因其产生在Cod ...

  4. 第一章 Kubernetes入门

    第一章 Kubernetes入门 kubernetes是基于容器技术的分布式架构领先方案,是一个完备的分布式系统支撑平台. kubernetes带来的好处:1)全面拥抱微服务:2)统可以随时随地整体“ ...

  5. generate_fixed_frame()方法生成Java方法栈帧

    在从generate_normal_entry()函数调用generate_fixed_frame()函数时的栈与寄存器的状态如下: 栈的状态如下图所示. 各个寄存器的状态如下所示. rax: ret ...

  6. 用mysqldump备份数据库

    格式:/usr/local/mysql/bin/mysqldump -hip -Pport -uuser -ppasswd --set-gtid-purged=off  --database aa & ...

  7. keil5 使用JLink 向nrf52840DK 下载程序出现No Cortex-M SW Device Found

    今天打开52840 keil5 工程,下载程序无法下载成功,提示如下: 在Jlink 配置中(Option for target....-> Debug->Setting )SWDIO也无 ...

  8. Jmeter 常用函数(29)- 详解 __eval

    如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 和 __V 的作用基本一致,执行变量名 ...

  9. DP搬运工1 [来自yyy--mengbier的预设型dp]

    DP搬运工1 题目描述 给你 \(n,K\) ,求有多少个 \(1\) 到 \(n\) 的排列,满足相邻两个数的 \(max\) 的和不超过 \(K\). 输入格式 一行两个整数 \(n,K\). 输 ...

  10. JavaScript学习系列博客_38_JavaScript 事件

    事件(Event) - 事件指的是用户和浏览器之间的交互行为.比如:点击按钮.关闭窗口.鼠标移动.... - 我们可以为事件来绑定回调函数来响应事件. - 绑定事件的方式: 1.可以在标签的事件属性中 ...