<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

    主站蜘蛛池模板: 亚洲色WWW成人永久网址| 亚洲黄色一级毛片| 久久免费国产精品一区二区| 久久夜色精品国产嚕嚕亚洲av| 免费在线视频你懂的| 国产精品亚洲专区无码唯爱网| 国产亚洲精品免费视频播放| 最近中文字幕免费mv在线视频| 久久精品国产亚洲av天美18| 亚洲色自偷自拍另类小说| 精品女同一区二区三区免费站| 怡红院亚洲红怡院在线观看| 日本红怡院亚洲红怡院最新| 免费可以在线看A∨网站| 毛片基地看看成人免费| 亚洲人成网男女大片在线播放| 亚洲欧洲日产国码高潮αv| 蜜臀98精品国产免费观看| 男女男精品网站免费观看| 精品日韩亚洲AV无码一区二区三区| 国产午夜影视大全免费观看| 精品无码无人网站免费视频| 污污污视频在线免费观看| 亚洲一区二区三区国产精品无码| 日韩一卡2卡3卡4卡新区亚洲| 最近最新的免费中文字幕| 东方aⅴ免费观看久久av| 大桥未久亚洲无av码在线 | 国产免费观看黄AV片| 久久精品国产免费观看 | 成人毛片18女人毛片免费视频未 | 91热成人精品国产免费| 一级特黄aaa大片免费看| 亚洲国产片在线观看| 国产亚洲精品国产| 伊人久久亚洲综合影院| 免费人成视频在线| 91久久成人免费| 免费观看91视频| 久久久久女教师免费一区| 国产精品亚洲专区无码牛牛|