繼續(xù)總結(jié)Struts的第2天的學習成果!
今天剛一上課,吳老就又總結(jié)了下昨天的知識點,并且,又給我們講了一遍Struts的加載流程。這個問題在昨天的博客中已經(jīng)寫到,今天就不具體描述了。
Struts的5個擴展點:
1.ActionSerlet 擴充中央控制器
2.RequestProessor組件 請求處理器
3.ActionForm
4.Action
5.Plug in 插件
Struts視圖組件
提到Struts視圖組件那么就的提ActionForm了,ActionForm封裝了客戶端的請求信息,我們一般所用的就是一般的靜態(tài)Action,也就是說我們的ActionForm必須創(chuàng)建出來。
ActionForm的生命周期:
ActionForm是在web服務(wù)器到傳遞給不同的Action的時候也就是它的生命周期了,其實,我們可以看到我們的form對象的只能傳遞到Action里面,不能傳遞到我們的Model層了,那么,在Action中的時候我們就必須要轉(zhuǎn)換ActionForm對象到DTO(簡單值對象),然后在繼續(xù)往下一層傳遞。
剛才提到了靜態(tài)的ActionForm對象,那么,可想而知肯定會有動態(tài)的ActionForm了,當然,java提供了7種內(nèi)置的ActionForm對象,今天就先熟悉一下我們的DynActionForm對象,動態(tài)的ActionFrom對象配置更為簡單,并且,不用創(chuàng)建formbean對象了。
好了,我們來看一下一個簡單的動態(tài)Form的配置吧,就拿今天的DynActionForm來說,示例:
<form-bean name="lovo"type="org.apache.struts.action.DynaActionForm">
屬性全部都在formbean里面直接配置,那么,這種書寫formbean的方法感覺很良好,但是,它有很多缺點,配置好了,那么我們的頁面如果改動的話我們的action里面也需要改動配置文件也需要改動,這樣就違反了開閉原則了,并且,不支持validate代碼方式驗證。
既然說到了formbean的驗證,那么就順便談?wù)剆truts的代碼方式的驗證。
我們需要做的是:
1.在Action的配置中需要配置兩項內(nèi)容,
validate="true" 是否驗證為true
2.在我們的formbean中需要重寫validate方法,那么我們來看一個最簡單的驗證:
好了,我們來具體看看這句代碼的意思
errors.add("name",newActionMessage("error.login.name"));
errors是一個裝錯誤的容器,大眼一看就曉得是一個MAP集合了,那么,它的鍵是對應(yīng)我們的jsp頁面顯示的property,值對應(yīng)著一條錯誤信息,我們會發(fā)現(xiàn)這條錯誤信息的參數(shù)看起來有點奇怪,其實,它的參數(shù)對應(yīng)著國際化文件-ApplicationResources.properties的鍵,那么,我們來看看這個properties文件:
error.login.name=\u7528\u6237\u540D\u975E\u6CD5\uFF01我們知道了,它的鍵的來源,那么,它的value是從哪來的,其實它的值正好對應(yīng)的是我們要提示的錯誤信息,這里我使用了utf-8編碼格式。