JAVA 去除实体中类型为string的属性值中的空格
前端传入的参数实体中,有时候会出现传入了一空格,导致操作失败,这时就可以利用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的属性值中的空格的更多相关文章
- 使用innerHTML获取HTML代码时,HTML标记属性的双引号好多都消失不见了,原来是属性值中包含空格才会保留双引号
最近搞的一个项目中所使用的方式比较奇怪,用Label显示HTML内容,然后不断地使用JS把Label的innerHTML复制到TextBox中. 但是,昨天发现了一个问题,获取元素值的时候,有时候正常 ...
- js sort方法根据数组中对象的某一个属性值进行排序(实用方法)
js sort方法根据数组中对象的某一个属性值进行排序 sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [ {nam ...
- C# 反射获取属性值、名称、类型以及集合的属性值、类型名称
实体类 class Product { public string Id { get; set; } public string Name { get; set; } public List<P ...
- java正则表达式获取指定HTML标签的指定属性值
package com.mmq.regex; import java.util.ArrayList; import java.util.List; import java.util.regex.Mat ...
- js中attr 与find 获取属性值,
一.attr的用法 1. attr(属性名) //获取属性的值(取得第一个匹配元素的属性值.通过这个方法可以方便地从第一个匹配元素中获取一个属性的值.如果元素没有相应属性,则返回 und ...
- android中GridView关于间距的属性值介绍
android:columnWidth 设置列的宽度.关联的方法为:setColumnWidth(int) stretchMode属性值的作用是设置GridView中的条目以什么缩放模式去填充空间 ...
- js sort方法根据数组中对象的某一个属性值进行排序
sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [ {name:'zopp',age:0}, {name:'gpp' ...
- jquery中选择块并改变属性值的方法
本文为大家介绍下使用jquery改变class属性的值,通过removeClass.addClass实现,具体如下,感兴趣的朋友可以学习下jquery改变class属性的值 $("#top_ ...
- href标签中target的几个属性值
没有指定<a>的target属性值时,默认是"_blank,可以参考以下代码的设置来控制<a href="#" target="_blank& ...
随机推荐
- 如何使 pdf 文件在浏览器里面直接下载而不是打开
前言 在做需求过程中我们大概率会遇到在浏览器中下载文件的需求,如果仅仅是这个要求的话很简单,有如下两种解决方式. 第一种是通过 window 对象的 open 方法进行操作,将文件 url 直接在浏览 ...
- C#LeetCode刷题之#455-分发饼干(Assign Cookies)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4034 访问.. 假设你是一位很棒的家长,想要给你的孩子们一些小饼 ...
- Vue 离开页面时的校验-mixin-beforeRouteLeave
一定要看下函数前的注释, 需要在使用的页面定义[needCheckFlag]data属性 一定要看下函数前的注释, 需要在使用的页面定义[needCheckFlag]data属性 一定要看下函数前的注 ...
- try easy pytest 1tep介绍
『 tep is a testing tool to help you write pytest more easily. Try Easy Pytest! 』 tep前身 tep的前身是接口自动化测 ...
- Cobalt Strike简单使用
---恢复内容开始--- 一.介绍: 后渗透测试工具,基于Java开发,适用于团队间协同作战,简称“CS”. CS分为客户端和服务端,一般情况下我们称服务端为团队服务器,该工具具有社工功能(社会工程学 ...
- Linux kernel 模块 hello 测试
原文链接:https://www.cnblogs.com/nerohwang/p/3621316.html hello.c 文件: #include <linux/kernel.h> /* ...
- 第3篇 Scrum 冲刺博客
1.站立会议 照骗 进度 成员 昨日完成任务 今日计划任务 遇到的困难 钟智锋 确定客户端和服务器通信的形式 重新设计项目执行流程 我的规划过于混乱,对应难以同步开发 庄诗楷 绘制棋盘 游戏窗口的制作 ...
- 强化学习中的经验回放(The Experience Replay in Reinforcement Learning)
一.Play it again: reactivation of waking experience and memory(Trends in Neurosciences 2010) SWR发放模式不 ...
- 想学习SEO可以看哪些书籍
http://www.wocaoseo.com/thread-28-1-1.html 除了一些常见的比如入门推荐<走进搜索引擎>和进阶推荐<这就是搜索引擎--核心技术详解>之外 ...
- express-session中的saveUninitialized和resave
app.use(session({ name: config.session.name, secret: config.session.secret, resave: true, saveUninit ...