Struts1.1發(fā)布了這么長(zhǎng)時(shí)間了,我才剛剛開(kāi)始系統(tǒng)地學(xué)習(xí)Struts的相關(guān)知識(shí),經(jīng)過(guò)前一陣潛心研究,對(duì)Struts1.1中已有的類DispatchAction有了進(jìn)一步的認(rèn)識(shí)。我將在這里總結(jié)一下,希望能對(duì)大家有所幫助。
在1.0版本中我們通常都是用execute方法來(lái)完成我們對(duì)業(yè)務(wù)邏輯的處理及頁(yè)面的轉(zhuǎn)發(fā)。通常在一個(gè)Action中我們都只能夠完成一種業(yè)務(wù)邏輯的操作。如果要是完成多個(gè)業(yè)務(wù)邏輯(比如:添加、刪除等)功能相近的業(yè)務(wù)邏輯我們就沒(méi)有辦法了么?答案是否定的,我們可以通過(guò)在頁(yè)面中定義一個(gè)隱藏變量,在不同的頁(yè)面要求處理不同的業(yè)務(wù)邏輯的時(shí)候我們可以賦予這個(gè)變量不同的值,并在execute方法中通過(guò)對(duì)變量值的判斷來(lái)完成不同的業(yè)務(wù)邏輯操作。
舉例來(lái)說(shuō),我們首先在頁(yè)面中定義一個(gè)隱藏變量。
<html:hidden property="operAt"/>
然后定義一個(gè)JavaScript函數(shù),我們可以在通過(guò)點(diǎn)擊提交按鈕的時(shí)候,在函數(shù)體里面修改它的值。
那我們?cè)诤笈_(tái)execute中又如何處理相關(guān)邏輯呢?
很簡(jiǎn)單吧!雖然說(shuō)這樣做我們可以實(shí)現(xiàn)多個(gè)業(yè)務(wù)邏輯在同一個(gè)Action中實(shí)現(xiàn),可是帶來(lái)的代價(jià)便是代碼的冗長(zhǎng),不易理解。
下面我們就要介紹一下DispatchAction類了。它是Action的一個(gè)子類,它可以實(shí)現(xiàn)多個(gè)業(yè)務(wù)邏輯在同一個(gè)Action當(dāng)中的實(shí)現(xiàn),而上面的例子在DispatchAction中也就變成了下面的形式:
每一種業(yè)務(wù)邏輯都能在DispatchAction當(dāng)中找到對(duì)應(yīng)的方法。那么我們?nèi)绾稳?shí)現(xiàn)這樣的調(diào)用呢?DispatchAction中對(duì)struts-config.xml的配置比一般的Action配置稍顯麻煩,舉例來(lái)講:
我們?cè)谶@里指定了
http://localhost:8080/tsss/telConsle.do?method=save
顯然,通過(guò)顯示鏈接指定參數(shù)值的方法可以達(dá)到我們調(diào)用方法的目的。然而我們?nèi)绻幌腼@示調(diào)用的話我們應(yīng)該怎樣處理呢?還記得前面講過(guò)的方法么?我們?cè)陧?yè)面中定義一個(gè)隱藏的變量,然后通過(guò)對(duì)變量的賦值來(lái)確定我們來(lái)確定我們將要執(zhí)行的業(yè)務(wù)方法。在這里我們可不可以一樣這樣使用呢?
答案是肯定的,我們當(dāng)然可以通過(guò)定義一個(gè)類似于<html:hidden property="operAt"/>的變量,只要對(duì)該變量賦上對(duì)應(yīng)DispatchAction中的方法的值來(lái)確定我們要調(diào)用的業(yè)務(wù)方法。然而筆者比提倡用Struts標(biāo)簽來(lái)定義這樣的隱含的變量,因?yàn)?/span>Struts標(biāo)簽為動(dòng)態(tài)標(biāo)簽,它可能需要在FormBean中定義該屬性的get和set方法,而在parameter中定義的值不需要在FormBean當(dāng)中定義get和set方法。筆者建議用html的標(biāo)準(zhǔn)標(biāo)簽<input>來(lái)定義該隱藏變量。因?yàn)樵摌?biāo)簽為靜態(tài)標(biāo)簽,如果我們?cè)撚?/span>Struts標(biāo)簽的話可能導(dǎo)致頁(yè)面出錯(cuò)。
怎么樣?通過(guò)上面的論述,您是否能夠?qū)?/span>DistpatchAction有了初步了解呢?關(guān)于DispatchAction用法小弟還是出此體驗(yàn),有什么不足之處還希望各位大蝦能批評(píng)指點(diǎn)! |
聯(lián)系客服