1. 程式人生 > >ModelDriven利用泛型實現多個Action得到不同的getModel類

ModelDriven利用泛型實現多個Action得到不同的getModel類

public class BaseAction<T> extends ActionSupport implements ModelDriven<T> {
Class<T> clazz;
T t;

	public BaseAction() {
	super();
      ParameterizedType parameterizedType =  (ParameterizedType) getClass().getGenericSuperclass();  
      Type[] types = parameterizedType.getActualTypeArguments();  
      clazz = (Class<T>) types[0];  
      try {
 		 t=clazz.newInstance();
 	} catch (InstantiationException e) {
 		e.printStackTrace();
 	} catch (IllegalAccessException e) {
 		e.printStackTrace();
 	}
}

	@SuppressWarnings("unchecked")
	@Override
	public T getModel(){
	  
	return t;
	}

}

注意t是建立的類,而clazz是Class<T>這是不一樣的,以後建立的action只要繼承BaseAction

就可以使用封裝好的t了

如下

public class DepartmentAction extends BaseAction<Department> {
private DepartmentService departmentService;

public DepartmentService getDepartmentService() {
	return departmentService;
}
@Resource(name="departmentServiceImpl")
public void setDepartmentService(DepartmentService departmentService) {
	this.departmentService = departmentService;
}
public String add(){
	departmentService.save(t);
	return "toList";
}
}


注意不要把T 和Class<T>混淆,否則會出現save(Class<?>)不是save(T t)這樣的錯誤

相關推薦

ModelDriven利用實現Action得到不同getModel

public class BaseAction<T> extends ActionSupport implements ModelDriven<T> { Class<T> clazz; T t; public BaseAction()

Java 利用實現折半查詢法

泛型到底厲害在什麼地方? 可以大大減少我們的程式碼量,可以把我們從重複工作中解放出來,使我們更加專注於核心程式碼的實現,核心演算法的編寫。 舉一個最簡單的例子: 我們在學習資料結構時,為了理解方便和簡化程式設計,通常都使用整數作為分析的物件。利用Java的泛型機制,只需要將int型別

LInux中利用執行緒實現客戶端和伺服器端進行通訊

上一篇博文講了如何利用子程序實現多個客戶端和伺服器端進行通訊, 那麼,這一篇部落格就來實現一下如何利用執行緒實現多個客戶端和伺服器端進行通訊 程式碼實現: ser1.c #include <

java extends

1.泛型邊界: Java泛型程式設計時,編譯器忽略泛型引數的具體型別,認為使用泛型的類、方法對Object都適用,這在泛型程式設計中稱為型別資訊檫除。 例如: [java] view plaincopyprint? class GenericType{  publ

flask-restful路由實現url地址指向同一個

from flask import Flask from flask_restful import Api app = Flask(__name__) api = Api(app) api.add_re

安卓startActivityForResult實現Activity之間不同跳轉流程

問題描述:需要從MainActivity跳轉到B,再從B跳轉到C,最後從C跳回到MainActivity 先定義activity_main.xml,如下: <span style="font-

在一個form表單中實現submit不同action

var ctype 編號 表單 顯示 col 格式 action 否則 在button中用JS的事件綁定onclick實現,如下: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "

利用 Siblings一步實現同級div,只改變當前點擊的div樣式

ima 可選參數 cto 一個 五個 點擊 rem wid bin 記錄一點,小技巧。直接上代碼嘍,因為今天還沒有功夫扯皮呢。 <!DOCTYPE html> <html> <head&g

nginx利用try_files實現

col 作用 視頻 pre cep files 是否 err data 比如一個視頻網站,視頻資源分散在幾臺機器上,但是給用要提供統一的IP,路徑,端口。就需要nginx,先檢查本機是否有改文件,如果沒有就代理其他地方 location / { root /da

bootstrap中利用Tag實現div的上下頁切換

func acc tex oot trap www. active cli ane 添加 nav 和 nav-tabs 類到 ul 中,將會應用 Bootstrap 標簽樣式,添加 nav 和 nav-pills 類到 ul 中,將會應用 Bootstrap 膠囊式樣式 &

基於反射+註解+迭代+實現的一對查詢方法

主要是加入兩個新註解 一個Entity註解,加在類的實體屬性上   /** * 實體物件屬性的註解 */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface Ent

在springnvc/springboot中, 利用jason 的Map引數實現引數傳遞

在在springnvc/springboot中,我們知道如用HTTP POST方法來寫REST 呼叫,則@RequestBody是不允許有多個的,比如下面的宣告是無效的。 @RequestMapping(value = "/updateInsert", method =

利用JQUERY實現AJAX請求等待

前言 通常,jQuery的函式ajax進行Ajax呼叫。函式ajax只能做一個Ajax呼叫。當Ajax呼叫成功時,執行回撥函式。可選地,當Ajax呼叫返回錯誤時,呼叫另一個回撥函式。但是,該功能不能根據這些請求的結果進行多個Ajax請求和註冊回撥函式。一種情況是,網頁

利用介面來實現

I介面 i = new MyClass();             i.funk();             Console.ReadKey(); interface I介面     {         void funk();     } class MyClass:

開啟jsp頁面自動載入Action實現方法

      平時我們載入Action的時候都是提交表單,或者點選按鈕以後才能發起Action請求。         現在我要實現一個功能:開啟一個網站的首頁從資料庫中立刻讀取多條不同表中的資料顯示在頁面上。這個時候要發起多個Action請求,而且還是要自動發起請求。    

struts2中,一個Form表單配置action實現原理及案例

一、原理說明 以登入註冊為例 login.jsp:Form表單中包含登入、註冊兩個按鈕。登入按鈕配置LoginAction.java,註冊按鈕配置RegistAction.java <%@ page language="java" content

Android利用和反射來實現對資料庫的操作--SqlHelper

利用泛型和反射來實現對資料庫的操作 1.對資料庫操作的介面類 package com.dou361.dal; import java.util.List; /** * @author jjdxm * http://www.dou361.com * http:/

Struts2配置一個Action實現請求

struts2中的Action預設執行方法為execute(),儘管可以通過<action name="addUser" class="addUser" method="doFun">設定預設執行方法,但也難以改變一個<action>一個方法的窘境。

使用實現棧結構

move 一個 jsb 集合類 取出 term stat == 所有 泛型類就是含有一個或者多個類型參數的類。定義泛型類非常easy,僅僅須要在類的名稱後面加上“<”和“>”,並在當中指明類型參數,比方本例中的T。 也能夠在當中指明多個參數,如K、V。

wqjtfbkd0層封裝實現(SpriNgMc

spring tar ref htm iou 泛型 blank ins target wqjtfbkd0層封裝泛型實現(SpriNgMc 穸跖 wqjtfbkd0層封裝泛型實現(SpriNgMcwqjtfbkd0層封裝泛型實現(SpriNgMc