前端传入的参数实体中,有时候会出现传入了一空格,导致操作失败,这时就可以利用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 }
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 + ‘}‘; } }
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 }
以上是本文的全部内容,希望对大家的学习有所帮助,也希望能得到大家支持。
原文:https://www.cnblogs.com/yangshus/p/13645425.html