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

  java代码示例:

 package com.spyang.util;

 import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Lists; import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List; /**
* 功能描述: 将类中的类型为'String'的属性值中的空格去掉
*
* @author shuangping.yang
* @version 1.0
* @ClassName BeanUtil
* @date 2020-9-10
*/
@Slf4j
public class TrimBeanUtil { private static final String JAVA_TYPE = "java.lang.String";
private static final String GET = "get";
private static final String SET = "set"; /**
* 循环去除每个字段的空格
*
* @param bean 实体
*/
public static void beanAttributeValueTrim(Object bean) {
if (bean != null) {
//获取所有的字段包括public,private,protected,private
List<Field> fieldList = Lists.newArrayList(bean.getClass().getDeclaredFields());
fieldList.stream().forEach(field -> {
//判断每个字段是否是sting类型,只有是string类型时才能去除前后空格
if (JAVA_TYPE.equals(field.getType().getName())) {
//获取每个字段的字段名
String fieldName = field.getName();
try {
//利用java反射机制获取对应字段的值
Object value = getFieldValue(bean, fieldName);
if (null != value) {
// 同样利用java 反射机制将修改后的值进行赋值
setFieldValue(bean, fieldName, value.toString());
}
} catch (Exception e) {
log.error("field conversion error ===>name{},msg{}", fieldName, e);
}
}
});
}
} /**
* 利用反射通过get方法获取bean中字段fieldName的值
*
* @param bean 实体
* @param fieldName 字段
* @return object 对应值
* @throws Exception
*/
private static Object getFieldValue(Object bean, String fieldName) throws Exception {
Method method;
// 获取对应字段的get方法名称,首字母改为大写: getName
StringBuffer methodName = new StringBuffer();
methodName.append(GET).append(fieldName.substring(0, 1).toUpperCase())
.append(fieldName.substring(1));
//获取对应的方法
method = bean.getClass().getMethod(methodName.toString(), new Class[0]);
return method.invoke(bean);
} /**
* 利用发射调用bean.set方法将value设置到字段
*
* @param bean 实体
* @param fieldName 字段
* @param fieldValue 赋值
* @throws Exception
*/
private static void setFieldValue(Object bean, String fieldName, String fieldValue) throws Exception {
Class[] classArr = new Class[1];
StringBuffer methodName = new StringBuffer();
// 获取对应字段的set方法名称,首字母改为大写:setName
methodName.append(SET).append(fieldName.substring(0, 1).toUpperCase())
.append(fieldName.substring(1));
//利用发射调用bean.set方法将value设置到字段
classArr[0] = JAVA_TYPE.getClass();
Method method = bean.getClass().getMethod(methodName.toString(), classArr);
method.invoke(bean, fieldValue.trim());
}
} 

package com.spyang.entiy;

/**
* @author shuangping.yang
* @version 1.0
* @ClassName Demo
* @date 2020.09.10 上午 11:37
*/
public class Demo {
private String name;
private String gender;
private Integer age; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getGender() {
return gender;
} public void setGender(String gender) {
this.gender = gender;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} @Override
public String toString() {
return "Demo{" +
"name='" + name + '\'' +
", gender='" + gender + '\'' +
", age=" + age +
'}';
}
}

实体类

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

例子

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

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. angular.js 本地数据存储LocalStorage

    定义工厂模式 factory  本地存储数据服务 app.factory('locals', ['$window', function ($window) { return { //存储单个属性 se ...

  2. Vue 引入指定目录文件夹所有的组件 require.context

    require.context require.context是webpack中用来管理依赖的一个函数,此方法会生成一个上下文模块,包含目录下所有的模块的引用,同构正则表达式匹配,然后require进 ...

  3. 动态规划算法详解 Dynamic Programming

    博客出处: https://blog.csdn.net/u013309870/article/details/75193592 前言 最近在牛客网上做了几套公司的真题,发现有关动态规划(Dynamic ...

  4. DRF内置过滤组件与排序组件结合使用

    DRF内置过滤组件Filtering DRF提供了内置过滤组件Filtering,可以结合url路径的改变获取想要的数据,当然用户不可能在url访问路径中自己设置过滤条件,肯定是后端开发人员将前端页面 ...

  5. 封装react antd的form表单组件

    form表单在我们日常的开发过程中被使用到的概率还是很大的,比如包含了登录.注册.修改个人信息.新增修改业务数据等的公司内部管理系统.而在使用时这些表单的样式如高度.上下边距.边框.圆角.阴影.高亮等 ...

  6. 设计模式详解及Python实现

    设计模式及Python实现 设计模式是什么? Christopher Alexander:"每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心*.这样你就能一次又一 ...

  7. IOS 如何持久化自定义对象 2014-08-01 01:38

    如果持久话自定义对象 那么这个对象一定要遵循 NSCoding 协议 并实现编解码:然后再将编解码后的数据 NSKeyedArchiver 到NSData中   @interface NSKeyAnd ...

  8. 浏览器自动化的一些体会9 访问angular页面的一个问题

    发现浏览器自动化有一个重要方面没有提及,即所谓的无页面浏览器,不过最近没有需求,不想尝试,先记上一笔,以后有需求时,可以有个思路. 大约一两个月前(现在比较懒散,时间不知不觉过去,连今天是几号有时候都 ...

  9. 《从缺陷中学习CC++》总结

    从缺陷中学习CC++总结 从本质上来说,这就是一个CC++的错题集.全书中包括63个问题引发的错误,即书名中的缺陷.共分为10章,每一张还有一个比较经典的小结,个人感觉这本书只需要仔细看一下每一章后面 ...

  10. Jmeter 常用函数(3)- 详解 __RandomString

    如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 根据指定的字符产生一个随机字符串 语法 ...