灵活封装Struts2的action类

来源:互联网 发布:淘宝数据魔方下线 编辑:程序博客网 时间:2024/06/08 04:10
<pre code_snippet_id="201258" snippet_file_name="blog_20140223_1_4157116" name="code" class="java">package cn.lhzd.tool;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;/** *获取子类传递的泛型对象 *clazz  继承者对象的:为(this.class) *return 泛型数组中的对象 */@SuppressWarnings("rawtypes")public class ClassTool {public static Class GenericInstantiation(Class clazz) {//返回clazz的父类类型。Type type = clazz.getGenericSuperclass();//转为Type的子类ParameterizedType类,通过它可以获取到对象    类型的泛型数组ParameterizedType parameter = (ParameterizedType) type;//获取对象obj<T>中的泛型对象。如<User,Order>,0索引表示第一个userclazz = (Class) parameter.getActualTypeArguments()[0];//返回给调用者return clazz;}} 
</pre><strong>让action继续BaseAction类。</strong><pre>
package cn.lhzd.web.action;import javax.servlet.ServletContext;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.interceptor.ServletResponseAware;import org.apache.struts2.util.ServletContextAware;import cn.lhzd.tool.ClassTool;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;/** * Action工具类 * 1:使用action继续此类,只需要传递模型对象,即可。 * 2:拥有request,response,context * 3:子类调用getModel();可获取到 表单封装数据后模型对象。 * * @param <T> 模型对象 */@SuppressWarnings({ "unchecked", "serial","rawtypes","unused"})public class BaseAction<T> extends ActionSupport implements ModelDriven<T>,ServletRequestAware,ServletResponseAware,ServletContextAware {//用于接收继承者传递的泛型对象private T obj;//采用protected 修饰,子类可以直接调用。protected ServletRequest request;protected ServletResponse response;protected ServletContext context;//通过子类先实例化父构造方法,创建泛型对象,做为模型驱动对象。public BaseAction() {Class clazz = ClassTool.GenericInstantiation(this.getClass());try {obj = (T) clazz.newInstance();} catch (Exception e) {e.printStackTrace();}}public T getModel() {return obj;}public void setServletResponse(HttpServletResponse response) {this.response = response;}public void setServletRequest(HttpServletRequest request) {this.request = request;}public void setServletContext(ServletContext context) {this.context = context;}}

                                             
0 0
原创粉丝点击