在struts的action中 总有这样的情况
用struts1.x是从from里取值 然后放入一个对象
用struts2.x是从this.里取值 然后放入一个对象
然后对这个对象进行操作
代码一大串都出现在action中
非常难看 代码质量下降 总是在拷贝粘贴代码
刚写了个类解决这个问题
package com.harmony.themis.onDuty.web.action;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import com.harmony.themis.commons.web.action.BaseAction;
public class ObjectSetValue {
public Object getValueByAction(String returnClassName/*需要赋值的类的className*/, BaseAction baseAction/*你的action父类是谁这里就写谁 如果是自定义的这个参数类型得改 也可以是from*/) {
Object obj = null;
Map map = new HashMap();
Method[] methodes = null;
//将action中所有方法放入到map 中 这个map只为查询是否有get方法
methodes = baseAction.getClass().getMethods();
for(Method met : methodes){
map.put(met.getName(), "");
}
try {
obj = Class.forName(returnClassName).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
methodes = Class.forName(returnClassName).getMethods();
} catch (SecurityException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//循环类的所有方法
for(Method met : methodes){
//如果是set方法
if(met.getName().indexOf("set")==0){
//得到除去set的属性名
String metName = met.getName().replaceFirst("set", "");
//得到get方法的方法名
String getMetName = "get"+metName;
try {
//如果action中有对应的get方法
if(map.containsKey(getMetName)){
//执行类的set方法 对应action的get方法
met.invoke(obj,new Object[] {baseAction.getClass().getMethod(getMetName, new Class[]{ }).invoke(baseAction, new Class[]{ }) } ) ;
}
} catch (IllegalArgumentException e) {
e .printStackTrace();
} catch (IllegalAccessException e) {
e .printStackTrace();
} catch (InvocationTargetException e) {
e .printStackTrace();
} catch (SecurityException e1) {
e1.printStackTrace();
} catch (NoSuchMethodException e1) {
e1.printStackTrace();
}
}
}
return obj;
}
}
分享到:
相关推荐
本篇文章将深入探讨在Struts中FormBean的日期类型字段如何进行赋值以及自动转化。 一、FormBean的概念与作用 FormBean是Struts中的一种特殊Java类,用于封装HTTP请求中的参数。它们通常继承自`org.apache.struts....
在自制的Struts中,你可以创建一个`Dispatcher`类,它接受请求和Action结果,然后使用`RequestDispatcher`的`forward()`方法将请求转发到相应的资源。反射在这里可以用来动态地查找和调用这个`Dispatcher`。 在实际...
在 Struts2 中,可以通过实现Aware接口来获取 Response 对象。例如,要获取 HttpServletResponse 对象,需要实现 org.apache.struts2.interceptor.ServletResponseAware 接口。下面是一个示例代码: ```java ...
本文将详细讲解在Struts2中获取`request`对象的几种常见方法,以及它们的适用场景。 1. **Action上下文(ActionContext)** `ActionContext`是Struts2的核心组件之一,它封装了与当前请求相关的所有上下文信息,...
4. 设置返回值:在方法中填充Map或对象的属性,Struts2会自动将这些数据转换为JSON格式。 5. 客户端处理:在JavaScript中,可以通过Ajax请求获取到JSON数据,并使用JSON.parse()解析为JavaScript对象,然后进行...
在Java开发中,Struts框架和反射都是常用于处理数据绑定和对象操作的重要工具。本文将深入探讨这两种技术,特别是它们在自动装填前台数据方面的相似性。 首先,让我们了解Struts框架。Struts是一个开源的MVC(Model...
Struts2通过ActionSupport类中的默认数据绑定方法`setParameters()`实现了请求参数到Action属性的映射。当Action类继承自ActionSupport时,Struts2会自动将请求参数按照属性名进行匹配并赋值。例如,如果页面上有名...
NULL 博文链接:https://chaoyi.iteye.com/blog/2156733
Struts2 框架中,Action 组件可以通过多种方式接收参数,这些方式包括使用 Action 的属性、使用 DomainModel 和使用 ModelDriven。下面将详细介绍这些方法: 使用 Action 的属性接收参数 在 Struts2 中,可以使用 ...
本文将详细讨论如何在Struts中使用ActionForm的`validate`方法进行数据验证。 `validate`方法是在ActionForm中定义的一个可选方法,用于在提交表单数据后验证用户输入的有效性。这个方法通常会在调用Action的`...
这样,当Action执行并返回`SUCCESS`时,Struts2的JSON插件会自动将`users`对象序列化为JSON格式,并将其作为响应发送给客户端。 以下是`UserAction`的简要代码: ```java public class UserAction extends ...
在Struts1.2中处理表单提交,特别是当表单数据包含列表对象时,需要理解一些核心概念和技术。这篇博客文章可能详细探讨了如何在Struts1.2中处理这类情况。 首先,让我们来了解Struts1.2中的表单提交流程。当用户在...
但是,在开发工作中,对功能的升级是基于既定架构是很常见的情况。本人碰到需要用开发基于Struts2的HTTP+JSON返回类型接口就是基于既定框架结构下进行的。 Struts2返回JSON有两种方式:1.使用Servlet的输出流写入...
OGNL是Struts2中强大的表达式语言,它允许开发者直接在JSP或Action中通过表达式来访问request、session和application中的数据。例如,`['key']" />`可以在页面上显示session中的值。在Action中,`ognl.get("session...
在Struts中,反射主要用于实例化Action类,执行特定的动作方法。当一个HTTP请求到达时,Struts通过反射找到对应的Action类及其执行方法,然后根据配置文件中的信息来调用这个方法。 现在我们来看一下Struts的底层...
这通常通过`RequestDispatcher`的`forward()`方法完成,将请求和响应对象传递给目标Action,然后由Action处理业务逻辑并返回结果。 7. **实际应用中的优化**: 实际的Struts框架在DispatcherAction的实现上还考虑...
- 接着通过`ClassLoader.loadClass(factoryClass)`加载该类,并将其赋值给`MessageResourcesFactory.clazz`。 - 最后,通过`newInstance()`方法创建该类的一个实例。 **4. MessageResources的配置与使用** - ...
这个接口定义了一个方法`setServletResponse(HttpServletResponse response)`,当Action实例被创建时,Struts2框架会自动调用这个方法将`HttpServletResponse`对象注入到Action中。 下面是一个具体的示例代码: ``...
struts2 获取request session对象