前端传入的参数实体中,有时候会出现传入了一空格,导致操作失败,这时就可以利用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. Consul服务治理发现学习记录

    Consul 简介 Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用.限流.熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便.它提供了一个功 ...

  2. JNDI和连接池的配置

    什么是JNDI: Java Naming and Directory Interface,Java命名和目录接口 通过名称将资源与服务进行关联 配置JNDI的步骤:在tomcat下的Context.x ...

  3. 【BJOI2018】求和 - 倍增LCA

    题目描述 $master$ 对树上的求和非常感兴趣.他生成了一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的$k$次方和,而且每次的$k$可能是不同的.此处节点深度的定义是这个节点到根的路 ...

  4. 使用vs2008的一个问题 2008-01-08 13:13

    昨天在写控制台版的一个管理系统.语言是:c++ ,开发工具是:vs 2008 .功能简单的描述一下,它是就是简单的查询,插入,删除等操作,操作的对象是一个xml文件. 这时我要需要一个命令行参数,根据 ...

  5. Linux上通过curl发送PUT和POST请求

    通常而言,我们都使用curl发送get请求,但是还是可以使用它发送一些其他类型的请求的,如PUT/POST 只需要使用-X参数即可:

  6. golang fmt包

    fmt fmt包实现了类似C语言printf和scanf的格式化I/O.主要分为向外输出内容和获取输入内容两大部分. 向外输出 标准库fmt提供了以下几种输出相关函数. Print Print系列函数 ...

  7. latex在线帮助文档

    1.ctex官方网站 http://www.ctex.org/HomePage 2.在线帮助文档 http://www.ctex.org/OnlineDocuments

  8. Java程序员值得拥有的TreeMap指南

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个有颜值却假装靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有我精心为你准备的一线大厂面试题 ...

  9. 系综的实现方式(nve、nvt、npt)

    一.NVE系综 更新位置和速度,v和e恒定. 二.NVT系综 几种实现的方式: 如: fix 1 all nve #更新位置和速度,e和V保持不变.若只有这个命令,就只nve系综,如果和控温命令一起, ...

  10. 用 Java 拿下 HTML 分分钟写个小爬虫

    本文适合有 Java 基础知识的人群 本文作者:HelloGitHub-秦人 HelloGitHub 推出的<讲解开源项目>系列,今天给大家带来一款开源 Java 版一款网页元素解析框架- ...