项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个其他技术博客的的java反射讲解,非常受益。于是,哈哈哈

public static <T> void modelTrim(T model){Class<T> clazz = (Class<T>) model.getClass();//获取所有的bean中所有的成员变量Field[] fields = clazz.getDeclaredFields();for(int j=0;j<fields.length;j++){//获取所有的bean中变量类型为String的变量if("String".equals(fields[j].getType().getSimpleName())){try {//获取get方法名String methodName = "get"+fields[j].getName().substring(0, 1).toUpperCase()+fields[j].getName().replaceFirst("\\w", "");Method getMethod = clazz.getDeclaredMethod(methodName);//打破封装getMethod.setAccessible(true);//得到该方法的值Object methodValue = getMethod.invoke(model);//判断值是否为空或者为null,非的话这过滤前后空格if(methodValue != null && !"".equals(methodValue)){//获取set方法名String setMethodName = "set"+fields[j].getName().substring(0, 1).toUpperCase()+fields[j].getName().replaceFirst("\\w", "");//得到get方法的Method对象,带参数Method setMethod = clazz.getDeclaredMethod(setMethodName,fields[j].getType());setMethod.setAccessible(true);//赋值
                        setMethod.invoke(model, (Object)String.valueOf(methodValue).trim());}} catch (NoSuchMethodException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}}}

亲自上面试用是好使的

下面还有一套,通过request,和实体类来封装本人还未实验,以后有机会再试试

/*** 保存数据 *@param request*@param dto*@throws Exception*/public static void setDTOValue(HttpServletRequest request, Object dto) throws Exception {if ((dto == null) || (request == null))return;//得到类中所有的方法 基本上都是set和get方法Method[] methods = dto.getClass().getMethods();for (int i = 0; i < methods.length; i++) {try {//方法名String methodName = methods[i].getName();//方法参数的类型Class[] type = methods[i].getParameterTypes();//当时set方法时,判断依据:setXxxx类型if ((methodName.length() > 3) && (methodName.startsWith("set")) && (type.length == 1)) {//将set后面的大写字母转成小写并截取出来String name = methodName.substring(3, 4).toLowerCase() + methodName.substring(4);Object objValue = getBindValue(request, name, type[0]);if (objValue != null) {Object[] value = { objValue };invokeMothod(dto, methodName, type, value);}}} catch (Exception ex) {throw ex;}}}

还可以参考一下其他人的博客:
https://www.cnblogs.com/whgk/p/6122036.html

转载于:https://www.cnblogs.com/ZenoLiang/p/10436298.html

java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~...相关推荐

  1. java byte 正数最大_关于JAVA中Byte类型的取值范围的推论(*零为正数,-128在计算机中的表示方法...)...

    先看一段推理 +124:0111 1100 -124:1000 0100 +125:0111 1101 -125:1000 0011 +126:0111 1110 -126:1000 0010 +12 ...

  2. Java基础题37:(单选题)java中char类型的取值范围是() A.0 ... 32767 B.0 ... 65535

    37.(单选题)java中char类型的取值范围是() A.0 - 32767 B.0 - 65535 C.–256 - 255 D.–32768 - 32767 [正确答案]B [答案解析]在jav ...

  3. 为什么Java中float类型的取值范围大于long类型

    在学习Java的过程中,我遇到了一个很有意思的问题,就是为什么Java中float类型的取值范围会大于long类型. 类型名 大小/字节 取值范围 float 4(32bit) -3.4E+38 ~ ...

  4. java getparameter 乱码,request.getParameter()取值乱码解决办法

    当前位置:我的异常网» Java Web开发 » request.getParameter()取值乱码解决办法 request.getParameter()取值乱码解决办法 www.myexcepti ...

  5. Qt中QLineEdit(取值、赋值、背景文字、字体样式)、QTextEdit(取值、赋值)和QPlainTextEdit使用介绍

    目录 摘要说明: 一.QLineEdit(取值.赋值.背景文字.字体样式) 二.QTextEdit 三.QPlainTextEdit 摘要说明: QString 界面设计最常用到的组件就是QLabel ...

  6. Python:高级主题之(属性取值和赋值过程、属性描述符、装饰器)

    属性取值和赋值过程 一切皆是对象,类型也是对象. 对象包含一个__class__属性指向其所属类型. 对象包含一个__dict__属性指向其所包含的成员(属性和方法). 取值过程(下面是伪代码) 1 ...

  7. jQuery对表单元素的取值和赋值操作代码

    使用常规的思路:$("#keyword").value 取值是取不到的,因为此时$('#keydord')已经不是个element,而是个jquery对象,所以应该使用:$(&qu ...

  8. jQuery对html元素取值与赋值

    以下总结了常用的jQuery选择器对html元素取值与赋值 Textbox:  var str = $('#txt').val(); $('#txt').val("Set Lbl Value ...

  9. Salesforce中所有常用类型字段的取值与赋值

    Salesforce中所有常用字段类型的定义以及如何用代码进行取值和赋值: Field Type的定义: http://www.salesforce.com/us/developer/docs/api ...

  10. Ext---CheckBoxGroup的取值和赋值

    來源:http://hi.baidu.com/alan_ysq/blog/item/e2871801af6954011d9583ec.html Ext---CheckBoxGroup的取值和赋值 20 ...

最新文章

  1. DIV+CSS 命名规范
  2. DescriptionAttribute Class
  3. Spring JDBC整合
  4. java 登录 https_java – 如何在Web应用程序中实现HTTPS登录页面?
  5. C#基础解析之Ⅲ 【循环结构】
  6. ​“免疫杀手” Deep X-RAY
  7. React-Native学习笔记
  8. 太网设计FAQ:以太网MAC和PHY
  9. 中科大量子计算机科学家,中国科学院量子信息重点实验室
  10. LeetCode 320. 列举单词的全部缩写(回溯/位运算)
  11. git clone 某次提交前代码_git提交代码常用命令
  12. 【体系结构】Oracle的各种文件及其重要性
  13. PLSQL 11破解码
  14. CentOS6 的yum源配置
  15. 猜字游戏的各种玩法(附详细源码+演示结果),你都玩过吗?
  16. Keepalived之——*** WARNING - this build will not support IPVS with IPv6.解决方案
  17. java卸载错误2503_修复控制面板卸载程序时提示错误代码2502、2503的方法
  18. 【腾讯开发者大会】天刀手游开发历程(笔记)
  19. mongodb更新文档
  20. Eggjs笔记:egg-mongoose插件的集成,crud操作, 多表关联查询

热门文章

  1. Jpeg压缩的两种方法
  2. 管理Active Directory的工具
  3. 间通过蓝牙模块建立通讯_拥抱蓝牙mesh,幻腾用“互联”深化智能
  4. java list 排序_java 对list进行排序
  5. mongodb占内存过大情况处理
  6. php上搭建dvwa,使用phpstudy在windows上搭建DVWA
  7. 智慧工厂用到的技术_CCF VC物联网应用技术专业工作组走进苏宁物流智慧仓储工厂参观学习...
  8. 【渝粤教育】国家开放大学2018年秋季 8181-22T (1)老年保健按摩 参考试题
  9. [渝粤教育] 中国地质大学 测量学 复习题
  10. Linux汇编调试器EDB