1. 程式人生 > >Strust2 --- 根據泛型封裝Action的模型驅動ModelDriven獲取model物件

Strust2 --- 根據泛型封裝Action的模型驅動ModelDriven獲取model物件

public class BaseAction<T> extends ActionSupport implements ModelDriven<T> {

    //模型驅動
    protected T model;

    @Override
    public T getModel() {
        return model;
    }

    // easyui分頁引數
    protected int page;
    protected int rows;

    public void setPage(int page) {
        this.page = page;
    }
    public void setRows(int rows) {
        this.rows = rows;
    }

    //構造器完成model例項化
    public BaseAction(){
        // 構造子類Action物件,獲取繼承父型別的泛型
        // 例如:AreaAction extends BaseAction<Area>
        // getGenericSuperclass()獲取帶有泛型的父類class
        Type genericSuperclass = this.getClass().getGenericSuperclass();

        // 獲取型別的第一個泛型
        ParameterizedType parameterizedType = (ParameterizedType)genericSuperclass;
        Class<T> modelClass = (Class<T>) parameterizedType.getActualTypeArguments()[0];

        try {
            model = modelClass.newInstance();
        } catch (InstantiationException | IllegalAccessException e) {
            e.printStackTrace();
            System.out.println("模型構造失敗!!!");
        }
    }

    // 將分頁的查詢結果資料壓入值棧的方法
    protected void pushPageDataToValueStack(Page<T> pageData){
        //根據查詢結果,封裝datagrid需要的資料格式
        Map<String,Object> result = new HashMap<>();
        result.put("total",pageData.getTotalElements());
        result.put("rows",pageData.getContent());

        //壓入值棧返回
        ActionContext.getContext().getValueStack().push(result);
    }

}

相關推薦

Strust2 --- 根據封裝Action模型驅動ModelDriven獲取model物件

public class BaseAction<T> extends ActionSupport implements ModelDriven<T> { //模型驅動

001_gson的封裝

    我估計很多使用gson的人都會遇到這個問題   先來說說我怎麼發現這個問題的吧 我們知道gson最簡單的一個用法 就是把字串轉換成object或者list   舉個例子: public class User {

java操作mongodb,封裝增刪查改、條件查詢等操作

本文實現一個通用泛型封裝實現類,需要給定一個集合物件,類似mysql中與java對應的表;思想就是把給定的物件解析出所有非空欄位,儲存到一個BasicDBObject中,這裡一定要保證java物件與mongodb中的文件欄位名字一樣,因為程式碼為了實現通用,是預設以java物

struts學習(四)—屬性封裝模型驅動封裝和表示式封裝

本文學習內容來自傳智部落格struts教程。 1.屬性封裝 作用: 直接把表單提交屬性封裝到action的屬性裡面 步驟: (1)在action中宣告成員變數,變數名稱和表單輸入項的名稱一樣 (2)生成變數的set方法。 缺

Struts2模型驅動將實體類物件自動壓入值棧棧頂的問題

struts2中action自動將模型(實體類物件)放入值棧棧頂,棧頂的實體類例項的各個屬性(除了從頁面通過模型驅動進來的屬性)總是null,通過不斷的撓頭和查閱才發現模型驅動的ModelDriven介面的 getModel()返回的物件指向的是例項是最初new出的物件的地址,如果在acti

Struts2的模型驅動(ModelDriven)

1.  模型驅動:           模型驅動是使用javaBean物件來封裝請求引數,在整個MVC流程中可以直接使用這個物件。在傳送請求後Struts將各個請求引數(javab的屬性)封裝到一個JavaBean物件中,Action接收這個例項物件並用該物件進行相關處理返回處理結果。          

[瘋狂Java]的定義(類、介面、物件)、使用、繼承

1. 設計泛型的初衷:     1) 主要是為了解決Java容器無法記憶元素型別的問題:          i. 由於Java設計之初並不知道會往容器中存放什麼型別的元素,因此元素型別都設定為Object,這樣就什麼東西都能放了!          ii. 但是這樣設計有明

C++製作一個容器(可以盛放各種型別的物件

如果你想要一個可以盛放各種型別的物件,那麼基本上可以說在C++裡沒有,或者你可以用vector<boost::any>或者其他的什麼來模擬,我說那都不怎麼好。問題就在於我的型別會在執行時動態的增加,你不可能知道我會增加什麼型別,我的標頭檔案也不會給你。 現在

Java,結合JSONObject動態生成指定的物件

private <T> T getTargetClass(String resultString, T t) { System.out.println(resultString); JSONObject result = JSONObject.from

【SSH快速進階】——struts2的模型驅動ModelDriven

上篇部落格《SSH快速進階——struts2簡單的例項》中,處理使用者登陸的action—LoginAction為: package com.danny.user.action; public cl

wqjtfbkd0層封裝實現(SpriNgMc

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

從頭認識java-13.5 利用構建復雜模型

引用 ucid http lee private 這一 數據 pack ora 這一章節我們來展示一下如何利用泛型構建復雜模型?1.元組列表我們之前已經說過元組是一個復雜的模型,能夠返回多對象。package com.ray.ch11; import java.uti

SpringBank 開發日誌 重新設計Action調用Service的參數傳遞 使用解決類轉換問題

from eth 開始 request 攔截 反射 list 日期 check 之前想的比較簡單,請求到達controller的時候,傳給action的參數沒有經過任何封裝,就是一個Map。然後action再調用service的時候,傳遞的參數也是map @Control

struts2獲取表單數據之 屬性封裝 模型驅動 表達式封裝 對象封裝到list集合 對象封裝到map集合 五種方便的封裝方式

demo1 submit namespace auto nbsp return admin user pri 一、屬性封裝   屬性封裝是在action裏面設定屬性值,屬性名字一定要和表單中的name一樣,action中extends ActionSupport   dem

十二、事件,委托,委托,集合(和非),Lambda表達式(聲明委托,使用委托,簡單的委托示例,action<T>和func<t>委托,多播委托,匿名方法,Lambda表達式,參數,事件)

multicast new 調用方法 多播 ted 被調用 輸入參數 pac cas 事件(Event) 事件是一種對象或類能夠提供通知的成員,客戶端可以通過提供事件處理程序為相應的事件可添加可執行代碼,事件可以理解為一種特殊的委托。 委托(Delegate) 委托是存有對

通過hibernate封裝數據庫持久化過程回顧/繼承/實現等概念

ring 改進 具體類 額外 generated 父類 etc 字段 是你   前言 在開發過程中,我們不難發現,客戶的需求以及產品的定位對開發內容的走向有很大的決策作用,而這些往往需要在一開始就盡可能考慮周全和設計完善。為什麽說是盡可能,因為我們都知道,需求這種東西,一言

根據用戶名的輸入顯示密碼(用了<String>

子類 secret public pan rgs else println stat system.in /*接口List分為LinkedList和ArrayList;泛型<String>規定該類new出的對象或聲明的引用只能存放String類的對象 eg:Li

java高級-<T>和註解封裝與使用

bat string 為什麽 cor this 模塊名 vat () parameter p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Yuanti SC"; color: #000000 } span.s1 {

將伺服器響應封裝為一個

/** * * 返回前端資料封裝 */ //當序列化Json物件時,如果是null的物件,key也會消失 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) public class ServerResponse<T&

Action<T>和Func<T>委託,委託,,匿名函式,Lambda表示式的綜合使用

前言 在上篇文章C#中委託(delegate)和多播委託的理解中已經基本瞭解了委託的用法。 由於委託封裝的方法我們不一定知道其傳入的引數和返回值,例如之前說的的排序方法—————在物件的排序演算法中,需要對物件進行比較,而不同物件比較的方法不同,所以比較兩個物件的方法的引用可以作為引數傳