前端传入的参数实体中,有时候会出现传入了一空格,导致操作失败,这时就可以利用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. JavaFX桌面应用-为什么应用老是“未响应”

    日常使用软件的过程中,偶尔会遇到软件突然卡住,再点击几次就变成"未响应"的情况. 在JavaFX应用中同样也会出现这种情况,在开发过程中应该尽量避免这种情况的出现. >> ...

  2. java web工程导入jar包流程,容易犯错

    1)首先把jar包拷贝到WEB-INF/lib下 2)在Eclipse中web/WEB-INF/lib路径下刷新.(省略此步骤就会找不到) 3)Java Build Path中Remove掉Web A ...

  3. C#算法设计排序篇之01-冒泡排序(附带动画演示程序)

    冒泡排序(Bubble Sort) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/672 访问. 它重复地访问要排序的元 ...

  4. C#LeetCode刷题之#189-旋转数组(Rotate Array)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3700 访问. 给定一个数组,将数组中的元素向右移动 k 个位置, ...

  5. C#LeetCode刷题之#674-最长连续递增序列( Longest Continuous Increasing Subsequence)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3734 访问. 给定一个未经排序的整数数组,找到最长且连续的的递增 ...

  6. 把H2数据库从jar包部署到Kubernetes,并解决Ingress不支持TCP的问题

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! H2 Database是一个优秀的数据库,又小又方便,支持内存和文件形式,经常会在测试.POC(proof of conce ...

  7. 关于华为否认HKSP来自官方的一点看法

    今天刷手机,无意看到一则消息: 华为否认提交给 Linux 内核的不安全补丁 HKSP 来自官方 这个消息吸引我的原因有几点: 华为被制裁刚满一年,现在由于新冠疫情影响,感觉又处于很敏感的时期: 华为 ...

  8. java泛型笔记

    目录 概述 什么是泛型?为什么使用泛型? 例子 特性 使用方式 泛型类 泛型接口 泛型通配符 泛型方法 泛型方法的基本用法 类中的泛型方法 泛型方法的基本用法 泛型方法与可变参数 静态方法与泛型 泛型 ...

  9. 简单的股票信息查询系统 1 程序启动后,给用户提供查询接口,允许用户重复查股票行情信息(用到循环) 2 允许用户通过模糊查询股票名,比如输入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来 3 允许按股票价格、涨跌幅、换手率这几列来筛选信息, 比如输入“价格>50”则把价格大于50的股票都打印,输入“市盈率<50“,则把市盈率小于50的股票都打印,不用判断等于。

    '''需求:1 程序启动后,给用户提供查询接口,允许用户重复查股票行情信息(用到循环)2 允许用户通过模糊查询股票名,比如输入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来3 允许按股票价格 ...

  10. CVE-2020-15778 OpenSSH命令注入漏洞复现

    一.漏洞概要 OpenSSH 8.3p1及之前版本中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令.目前绝大多数linux系统受影响. 参考链接:https://githu ...