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

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

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

    Jhonney的專欄

       ----人見人愛
    隨筆 - 49, 文章 - 1, 評論 - 23, 引用 - 0
    數(shù)據(jù)加載中……

    SimpleFormController workflow

          很久前,對SimpleFormController 和AbstractWizardFormController做過一段深入的分析,并對向?qū)偷淖隽藗€實例,但是估計是很少動手了,現(xiàn)在對這些東西又模糊了,我快瘋了。
          需要注意的是這兩個控制器都是橫跨兩個頁面的控制器,一個是get進入修改或新增頁面,另一個就是頁面提交即保存或增加

          由于SimpleFormController是繼承AbstractFormController,在該AbstractFormController中的handleRequestInternal方法需要判斷當(dāng)前提交的方法是Get還是Post,如果是Get則是New一個View,如果是Post則是運行客戶端業(yè)務(wù)邏輯,然后跳轉(zhuǎn)到成功頁面。

    •  通過Get 方式請求一個View

    1、Controller受到一個Get請求;

    2、formBackingObject()方法,如果需要讀取數(shù)據(jù)庫,這里是一個比較好的地方去做這件事情。然后將Object通過request.setAttribute來傳遞到頁面;如果頁面表單需要綁定多個Object,可以在這里讀取數(shù)據(jù)庫取得,然后設(shè)置到頁面上。

    3、initBinder() 這里是用來進行數(shù)據(jù)格式化轉(zhuǎn)換的;如果在頁面上顯示某些類型需要進行格式化顯示,那么需要在XXXXFormController中重載該方法,指定特定的轉(zhuǎn)換器完成對特定Object的設(shè)置。如對于日期格式需要在本方法中增加如下代碼:

    binder.registerCustomEditor(Date.class, null, new CustomDateEditor(

    new SimpleDateFormat("MM/dd/yyyy"),true));

    4、調(diào)用AbstractFormController.handleRequestInternal方法,在該方法中判斷,如果是新建一個Form View,則調(diào)用ShowNewForm方法,在ShowNewForm方法中調(diào)用了ShowForm方法,SimpleFormController實現(xiàn)了此方法,指向的url是Controller中注冊的formView參數(shù)。

    6、View 模塊完成,顯示給用戶。

     

    • 通過Post方式提交一個Form

    1、  提交后根據(jù)Action指向的URL在urlMapping配置中找到指定的Controller;

    2、  如果配置了Validator則使用該Validator(見applicationContext-validation.xml)進行相關(guān)的驗證;缺省是beanValidator。錯誤信息寫入到errors參數(shù)里。

    3、  調(diào)用AbstractFormController.handleRequestInternal方法,在該方法中判斷是通過Post來調(diào)用此方法,則調(diào)用processFormSubmission方法,該方法會先判斷errors中是否有驗證錯誤,如果有則返回到原表單頁面,顯示錯誤信息。

    4、  驗證通過后進入onSubmit方法,該方法的command參數(shù)對應(yīng)綁定到頁面的對象,

    如果在表單中有多個對象需要進行綁定,那么其它對象可以通過this.bindAndValidate(HttpServletRequest request, Object command);方法來進行綁定。

    5、  做相關(guān)的業(yè)務(wù)操作。

    6、  往返回界面上輸出結(jié)果提示信息,通過getText和saveMessage()方法完成。getText()第一個參數(shù)是在資源文件中的信息代碼,第二個參數(shù)是發(fā)給該信息的參數(shù),在該信息中通過{0}來讀取,第三個參數(shù)是當(dāng)前使用的Locale。saveMessage()的信息顯示是通過common\messages.jsp來進行。

    7、  返回一個ModelAndView(new RedirectView(success)),success對應(yīng)action-servlet.xml文件該Controller所配置successView,跳轉(zhuǎn)路徑是相對路徑。

    而對于MultiActionController來說,要么繼承這個類,要么給它設(shè)個delegate,注意不能類中出現(xiàn)方法多態(tài)。相對簡單一些

    posted on 2007-06-22 22:01 Jhonney 閱讀(536) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费国产成人α片| 久久国产精品成人免费| 在线观看免费视频资源| 成人毛片手机版免费看| 亚洲色无码专区在线观看| 亚洲人成影院在线高清| 黄色网页在线免费观看| 麻豆国产VA免费精品高清在线 | 中文字幕免费观看全部电影| 亚洲视频免费播放| 亚洲性一级理论片在线观看| 99re8这里有精品热视频免费| 日韩一级视频免费观看| 91在线精品亚洲一区二区| 一级看片免费视频| 青青青国产免费一夜七次郎| 国产精品亚洲一区二区在线观看| 免费无码一区二区三区| 日日噜噜噜噜夜夜爽亚洲精品| 精品亚洲456在线播放| 97免费人妻在线视频| 精品亚洲综合久久中文字幕| 免费精品国自产拍在线播放| 最近免费中文字幕大全视频| 亚洲一线产区二线产区区| 波多野结衣中文字幕免费视频| 亚洲国产成人久久精品影视| 国产一区二区三区免费观在线| 亚洲精品国产精品乱码不卡√| 成人a毛片视频免费看| 国产成人无码a区在线观看视频免费 | 亚洲天天做日日做天天欢毛片| 亚洲精品动漫免费二区| 亚洲高清视频免费| 日韩毛片无码永久免费看| 黄色短视频免费看| 久久亚洲国产最新网站| 在线观看亚洲天天一三视| 国产一卡2卡3卡4卡无卡免费视频| 久久久亚洲欧洲日产国码aⅴ| 四虎国产精品永久免费网址 |