最近项目遇到一个问题,就是客户需要我们存储一个表单的数据,而那个表单有40个数据!!!在前台我们使用Struts2的ModelDriven来获取对象,但往数据库中存就成了问题。因为它有20个字段是text类型,如果将null传过去会报varbinary转换text类型错误。(实在不知道这个varbinary是哪里冒出来的)。所以我们打牌一次次的判定获得的数据,如果为null,就赋值为“”。但是40个字段的get判定,要写很长时间,所以我们就用了一下反射处理。
//判断字段是否为空,如果是,赋值为“”
private void changeNull(RecordTemplate recordTemplate){
//得到RecordTemplate所有方法
Method[] methods = recordTemplate.getClass().getMethods();
System.out.println(methods.length);
for(int i=0;i<methods.length;i++){
String name = methods[i].getName();
//如果方法名以getParam为开始,那就是我们要的方法
if(name.indexOf("getParam")>=0){
try {
//如果该数据为空
if(methods[i].invoke(recordTemplate)==null){
String isName = name.substring(3);
System.out.println(isName);
try {
//得到该get方法对应的set方法
Method method = recordTemplate.getClass().getMethod
("set"+isName, String.class);
//使用对应的set方法赋值为“”
method.invoke(recordTemplate, "");
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
这样,就可以把这个bean实体的所有get方法遍历一遍,如果数据为null,就赋值为“”。
分享到:
相关推荐
利用反射,我们可以动态地创建对象,这意味着在代码执行时,我们能够实例化未知类型的对象,这在处理插件系统、动态加载用户界面组件或根据配置文件创建对象时非常有用。 标题中提到的"利用反射动态创建对象",主要...
### 利用反射实现JavaBean的自动赋值 在软件开发过程中,特别是在Web应用程序的开发中,经常会遇到需要将表单提交的数据绑定到JavaBean对象上的需求。这可以通过多种方式实现,例如使用Spring MVC等框架的自动绑定...
本篇将深入探讨如何利用反射动态加载和卸载DLL,以及在实际应用中的场景。 首先,我们需要了解DLL(动态链接库)在Windows操作系统中的作用。DLL文件是一组可重用的函数和数据,多个应用程序可以共享它们,以减少...
综上所述,"C#利用反射类的技术实现sql动态增删改查.rar"是一个关于如何在C#中利用反射进行数据库操作的实例,通过动态生成SQL语句,实现了对SQL数据库的灵活性和适应性。这种技术对于处理复杂的业务逻辑和多样化的...
总之,"基于C++的雷达数据处理系统"是一个复杂而重要的工程,它利用C++的强大功能来处理雷达数据,实现多目标跟踪,为军事、航空、交通监控等领域提供关键的信息支持。通过不断优化和测试,这样的系统可以持续提高其...
- **WPF和Silverlight中的XAML处理**:XAML解析和序列化过程中频繁使用反射来处理依赖属性和数据绑定,这增加了UI渲染的延迟。 - **ASP.NET MVC**:在路由、控制器和视图的匹配与调用过程中,反射被广泛使用,影响了...
在这个特定的案例中,"基于泛型反射的数据层封装"是利用了Java的泛型和反射特性来实现这一目标。泛型提供了一种在编译时类型安全的方式,允许我们创建可以处理多种类型的类、接口和方法。而反射则是Java提供的一种...
7. 自动化工具:如Apache POI库使用反射来操作Excel文件,而JSch库利用反射与SSH服务器进行通信。 然而,尽管反射带来了很多便利,但也有一些潜在的问题需要注意: - 性能:反射操作通常比直接的Java代码慢,因为...
- 代码复用:通过反射,可以编写通用的代码来处理不同类型的对象,减少了重复代码。 **局限性:** - 性能开销:反射涉及类型信息的查找和解析,比直接调用成员方法或访问字段慢得多。 - 安全性和性能问题:过度使用...
当从外部源(如网页表单或数据库查询结果)接收数据时,我们可以利用反射机制动态地创建bean对象并设置其属性值。 以下是一个简化的步骤来实现这个功能: 1. **获取bean类**:首先,你需要一个Class对象,它代表你...
这种方法在处理复杂对象结构或需要解耦代码时特别有用,例如在数据持久化、对象拷贝或者JSON序列化与反序列化等场景。 当然,使用反射会带来性能上的开销,且可能会增加代码的复杂性。因此,在实际开发中,我们通常...
反射的自动装填前台数据,通常指的是在接收前端数据后,利用反射API动态调用对象的setter方法,将接收到的数据设置到对象的属性中。 具体实现中,可以使用`Class`类的`forName()`方法获取类对象,然后通过`new...
- **元数据处理**:例如序列化、ORM框架(如Hibernate)使用反射解析数据库映射。 - **测试工具**:JUnit等测试框架通过反射调用私有方法进行测试。 - **动态加载和插件系统**:Java插件系统常利用反射加载和调用...
4. **动态代理**:Java的Proxy类和InvocationHandler接口利用反射实现动态代理,可以创建满足特定接口的代理对象。 5. **框架开发**:许多Java框架如Spring、Hibernate都大量使用反射来实现依赖注入、AOP等高级功能...
总结,"一个servlet类处理多个请求(反射优化)"是通过将Servlet设计为单例并利用反射动态调用方法,以提高服务性能和可扩展性。结合使用过滤器、注解和缓存策略,可以进一步优化Web应用的性能,提供更高效的服务。...
本主题将深入探讨如何利用反射技术绕过编译器的一些限制,并介绍hashcode在高级应用中的用法。 首先,让我们理解反射的基本概念。在Java中,反射提供了一种方式,使我们能够在运行时动态地获取类的信息(如类名、...
在本篇文章中,我们将深入探讨如何利用反射机制来简化DAO(数据访问对象)层的设计和实现。 首先,让我们理解什么是DAO层。DAO层是应用程序与数据库交互的一层抽象,它的主要职责是封装SQL查询,处理数据库操作,...
在MATLAB中,反射变换是一种线性几何变换,它通过将空间中的点映射到其镜像来操作图像或数据。这种变换对于图像处理、计算机视觉以及数学建模等领域非常有用。本文将深入探讨MATLAB中如何实现反射变换,并通过提供的...
3. 调用方法:利用反射,我们可以调用对象的任意方法,包括私有方法。在这种情况下,可能是调用某个方法来显示窗口。 4. 处理异常:反射操作可能会抛出异常,因此需要捕获并处理可能出现的ClassNotFoundException、...