<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    風(fēng)人園

    弱水三千,只取一瓢,便能解渴;佛法無(wú)邊,奉行一法,便能得益。
    隨筆 - 99, 文章 - 181, 評(píng)論 - 56, 引用 - 0
    數(shù)據(jù)加載中……

    SpringSide的Struts封裝

    SpringSide的Struts封裝

    1.概述?

    ?? SpringSide對(duì)Struts做了兩層封裝:

    ?? 第一層:StrutsAction,繼承于DispatchAction,附帶一些Utils函數(shù),另外注冊(cè)了幾個(gè)Converter。

    ?? 第二層:StruttsEntityAction,繼承于StrutsAction, 演示了如何為單個(gè)對(duì)象的CRUD操作(增刪改查)封裝了默認(rèn)Action,子類只需要范型聲明所管理的對(duì)象類型和管理類型,即擁有CRUD操作的能力。

    ????大家各自項(xiàng)目的習(xí)慣不同,流程,可以參考SpringSide的封裝,封裝自己的版本。

    ??? 典型子類代碼如下:

    								public class UserAction extends StrutsEntityAction<User,UserManager> {
         private UserManager userManager;
         public void setUserManager(UserManager userManager) {
               this.userManager = userManager;
         }
       }

    ?? 第一 extends StrutsEntityAction<User,UserManager>,聲明管理的Entity類型是User,管理的Entity是UserManager,UserManager必須實(shí)現(xiàn)EntityDao<T>接口;
    ?? 第二 定義userManager用于依賴注入的setter函數(shù);

    2.原理

    ???? StrutsEntityAction 會(huì)持有一個(gè)EntityDao接口的實(shí)體來(lái)做CRUD的操作,子類通過(guò)在泛型中聲明UserAction<User, UserManager>,自動(dòng)查找屬性中類型為UserManager的屬性作為EntityDao。如果子類有多個(gè)UserManager屬性(很少的情況),就需自行實(shí)現(xiàn)getEntityManager()函數(shù)。

    ???? CRUD現(xiàn)在主要封裝了list、edit、view、save、delete 5個(gè)流程,一般會(huì)調(diào)用doListEntity、doGetEntity、doNewEntity、doSaveEntity(),doDeleteEntity 5個(gè)業(yè)務(wù)函數(shù)去做相應(yīng)的業(yè)務(wù)操作。

    ???? 在controller中很重要的request 數(shù)據(jù)與POJO的轉(zhuǎn)換,由initEntity、initForm? 兩個(gè)函數(shù)完成。

    ???? initEntity 先調(diào)用bindObject 函數(shù)用BeanUtils 直接copy lazyBean的FormBean 和 Entity POJO,然后調(diào)用子類的onInitEntity()函數(shù)。initForm是同樣的原理。

    ?????通常還有一些輔助的對(duì)象,比如Book 修改頁(yè)要有Category列表做下拉選擇框,這些輔助對(duì)象統(tǒng)一子類重載onRefrence()函數(shù)放入request.attributes.

    3.擴(kuò)展與客戶化

    ?? EntityAction必須預(yù)留足夠的擴(kuò)展點(diǎn)給子類重載,具體函數(shù)注釋見StrutsEntityAction的JavaDoc, 包括:

    ??? 1.list、edit、view、save、delete: 五種action的流程封裝;
    ?? 2.doListEntity、doGetEntity、doNewEntity、doSaveEntity(),doDeleteEntity: 五種業(yè)務(wù)函數(shù)調(diào)用;
    ? ?3.initEntity、initForm?: FormBean與業(yè)務(wù)對(duì)象的初始化函數(shù)及refrenceData,onInitForm,onInitEntity 三個(gè)回調(diào)函數(shù);
    ?? 4.savedMessage、deletedMessage: 兩種業(yè)務(wù)操作成功后顯示的信息的回調(diào)函數(shù)。

    ??幾個(gè)回調(diào)函數(shù)在子類重載,而如果幾個(gè)封裝函數(shù)不合心意,請(qǐng)重新擴(kuò)展一個(gè)基類或完全重新封裝。

    posted on 2006-12-16 14:35 風(fēng)人園 閱讀(599) 評(píng)論(0)  編輯  收藏 所屬分類: Struts

    主站蜘蛛池模板: 亚洲国产成人资源在线软件| 国产亚洲综合色就色| 亚洲偷偷自拍高清| 97视频免费在线| 亚洲www在线观看| 在线观看免费为成年视频| 亚洲欧洲日韩极速播放| 午夜视频免费成人| 阿v视频免费在线观看| 亚洲国产精品毛片av不卡在线| 亚洲爆乳AAA无码专区| 四虎影在线永久免费四虎地址8848aa| 久久亚洲精品成人无码| 亚洲五月午夜免费在线视频| 黄色短视频免费看| 亚洲ⅴ国产v天堂a无码二区| 人与禽交免费网站视频| 亚洲欧美国产国产一区二区三区| 亚洲av午夜精品一区二区三区| www.xxxx.com日本免费| 亚洲av永久无码精品漫画| 91青青青国产在观免费影视| 亚洲午夜无码毛片av久久京东热| 四虎影视在线永久免费观看| 成全视频免费观看在线看| 亚洲欧洲精品一区二区三区| 国产麻豆免费观看91| 久久www免费人成看国产片| 久久久亚洲裙底偷窥综合| 全免费a级毛片免费看不卡| 又硬又粗又长又爽免费看 | 国产乱弄免费视频| gogo免费在线观看| 亚洲一卡二卡三卡四卡无卡麻豆| 免费a级毛片无码av| 最近中文字幕电影大全免费版| 亚洲日本在线电影| 久久久久久a亚洲欧洲AV| 免费毛片在线视频| 久久免费国产视频| 久久水蜜桃亚洲AV无码精品|