版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第 13 章Strtus 2 的常用Struts 2 和 Struts 1 一樣,也提供了大量的。但 Struts 2庫整合了 DOJO 技術(shù),可以生成的頁面效果。除此之外,Struts 2 還提供了很多在 Struts 1 中沒有的和功能,如日期選擇器、樹形結(jié)構(gòu)、和模板等。13.1控 制Struts 2 的非 UI包括控制和數(shù)據(jù)。其中控制主要完成條件邏輯、循環(huán)邏輯的控制,以及對(duì)集合的合并、排序等操作。本節(jié)將主要介紹如下幾個(gè)控制:if:用于控制條件邏輯的,可以和 elseif、else 配合使用,也可以單獨(dú)使用。elseif:與 if 結(jié)合使用,用于控制條件邏輯的else:與 if 結(jié)合使用,
2、用于控制條件邏輯的。iterator:用于處理循環(huán)邏輯。一般用于處理集合對(duì)象。append:用于將多個(gè)集合拼接成一個(gè)新的集合。13.1.1if/elseif/elseif/elseif/else 這 3 個(gè)都可用于控制條件邏輯,其中 if、elseif通過 test 屬性返回一個(gè)值,并根據(jù)該值是否為 true 來決定是否執(zhí)行體,當(dāng) if、elseif的 test 屬性值都為 false 時(shí),執(zhí)行 else的體??梢詥为?dú)使用,也可以與和這 3 個(gè)中的組合使用,但和不能單獨(dú)使用,這兩個(gè)必須和組合使用。if/elseif/else組合使用的語法格式如下:體體實(shí)際上,這 3 個(gè)的使用方法和 Java
3、語言中相應(yīng)的條件控制語句的用法相似,如在下面的 JSP 代碼中使用這 3 個(gè)來判斷請(qǐng)求參數(shù) grade 的值,并輸出相應(yīng)的等級(jí)信息:在瀏覽器地址欄中輸入如下的 URL:按正常的邏輯,上面的代碼應(yīng)該在瀏覽器中輸出“優(yōu)秀”,但并未輸出這條信息,而是拋出了圖 13.1 所示的異常。也許有的讀者會(huì)感到奇怪,condition.jsp 頁面在 Struts 2.x 的版本中可正確輸出信息,但是卻在本書所使用的 Struts 版本中拋出異常。實(shí)際上,原因也非常簡(jiǎn)單,讀者可以選擇一個(gè) Struts 2 的老版本,如 Struts 2.0.6,并打開jar 包中位于 META-INF 目錄中
4、的 struts-tags.tld 文件,可查找到如下所示的 if 和 elseif置代碼:的配402if.apache.struts2.views.jsp.IfTagif/elseif/else=90¶m.grade優(yōu)秀=80¶m.grade良好=70¶m.grade中等=60¶m.grade及格不及格體圖 13.1condition.jsp 頁面拋出的異常從上面的配置代碼可以看出,if 和 elseif的 test 屬性的值都是 true,說明在 Struts 2.0.6 中 if 和 elseif的 test 屬性可以使用 EL 表達(dá)式。讀者可以按同樣的方
5、式打開本書所采用的 Struts 的 struts-tags.tld 文件,會(huì)發(fā)現(xiàn) if和 elseif的 test 屬性的值都是 false,也就是說,在 Struts 中默認(rèn)情403testtruetrueelseif.apache.struts2.views.jsp.ElseIfTagtesttruetrue況下 if 和 elseif的 test 屬性都不支持 EL 表達(dá)式。事實(shí)上,從 Struts 2.0.10 開始,的值就已經(jīng)是 false 了,據(jù) Apache認(rèn)情況下,將 EL 表達(dá)式關(guān)閉了。解釋,由于 EL 存在著潛在的安全風(fēng)險(xiǎn),因此,在默如
6、果讀者想在 Struts 2.0.10 及以后的版本中的 if 和 elseif中使用EL 表達(dá)式,可以先將struts-tags.tld 文件解壓,并將 if 及 elseif 的值改為 true 后,將 struts-tags.tld 文件重新加入到 struts 的 jar 包中,并覆蓋原來的 struts-tags.tld 文件即可。打開其他的EL 表達(dá)式支持,也可采用同樣的方法。按上述方法修改了 if 和 elseif 的值后,再次下面的 URL:這時(shí)瀏覽器將輸出“優(yōu)秀”。如果讀者不想修改 struts-tags.tld 文件,也不想使用 EL 表達(dá)式,可以在 te
7、st 屬性中使用 OGNL 表達(dá)式。但要注意,如果判斷請(qǐng)求參數(shù),不能寫成如下的形式:在 Struts 2 中,要取得請(qǐng)求參數(shù)的值,然后進(jìn)行邏輯運(yùn)算,應(yīng)先在 Action 類中定義屬性來封裝請(qǐng)求參數(shù),并通過結(jié)果轉(zhuǎn)入 condition.jsp 頁面,再使用 OGNL 表達(dá)式進(jìn)行邏輯運(yùn)算。如下面 Action 類的代碼所示:在通過 SUCS 結(jié)果轉(zhuǎn)入 condition.jsp 頁面后,可以通過如下的代碼來進(jìn)行邏輯運(yùn)算:13.1.2iteratoriterator主要用于對(duì)集合進(jìn)行掃描,這里的集合包括數(shù)組、List、Set 以及 Map 對(duì)象。使用對(duì)集合進(jìn)行迭代時(shí)可以使用如下 3 個(gè)屬性:404=
8、90&grade優(yōu)秀public class Condition extendionSupportprivategrade; publicgetGrade()return grade;/grade 屬性的setter 方法public void setGrade(grade)this.grade=grade;/處理控制邏輯的execute 方法public String execute()return SUCS;=90圖 13.2使用 iterator迭代import import publiccom.opensymphony.xwork2.*; java.util.*;class Itera
9、torAction extend輸出集合中的所有元ionSupportprivaistpoetry=new ArrayList();public ListgetPoetry()return poetry;public void setPoetry(Listpoetry)this.poetry = poetry;public String execute()throws Exceptionpoetry.add(白日依山盡);poetry.add(入海流);poetry.add(欲窮千里目); poetry.add(更上一層樓);return SUCS;405.jspIteratorAction
10、類的配置代碼如下:使用輸出 poetry 屬性的代碼如下:在瀏覽器地址欄中輸入如下的 URL:瀏覽器將顯示和圖 13.2 相同的信息。通過的 sus 屬性,可以獲得每一個(gè)被迭代的集合元素的各種信息,sus 屬性指定了描述當(dāng)前集合狀態(tài)信息的 IteratorSus 對(duì)象,IteratorSus 類包括如下幾個(gè)方法:getCount:該方法返回一個(gè)getIndex:該方法返回一個(gè)isEven:該方法返回一個(gè)類型的值,表示當(dāng)前已經(jīng)迭代的集合元素個(gè)數(shù)。 類型的值,表示當(dāng)前集合元素的索引(從 0 開始)。類型的值,表示當(dāng)前迭代的元素索引是否為偶數(shù)。類型的值,表示當(dāng)前迭代的元素是否為集合的第一個(gè)元素。類型
11、的值,表示當(dāng)前迭代的元素是否為集合的最后一個(gè)is:該方法返回一個(gè)isLast:該方法返回一個(gè)元素。isOdd:該方法返回一個(gè)類型的值,表示當(dāng)前迭代的元素索引是否為奇數(shù)。下面的代碼利用 IteratorSus 類的 odd 屬性實(shí)現(xiàn)偶數(shù)行改變背景色,并在第一列顯示 index屬性值:406tr style=background-color:#CCCCCC/chapter13/iterator.jsp在瀏覽器地址欄中輸入如下的 URL:瀏覽器顯示的信息如圖 13.3 所示。除此之外,還可以掃描 Map 類型的對(duì)象。在掃描 Map 類型的對(duì)象時(shí),將每一個(gè) key-value 對(duì)象看做一個(gè)元素,也就是
12、有幾個(gè) key-value 對(duì),就會(huì)循環(huán)幾次。在掃描的過程中,可以分別輸出當(dāng)前元素的 key 和 value,這兩個(gè)值可以通過當(dāng)前元素的Mntry 類的 key 和 value 屬性輸出,如下面的代碼所示:在瀏覽器地址欄中輸入如下的 URL:瀏覽器顯示的信息如圖 13.4 所示。圖 13.3根據(jù) odd 屬性改變偶數(shù)行背景色圖 13.4使用 iterator 掃描 Map 對(duì)象407類型tr style=background-color:#CCCCCC13.1.3appendappend用于將多個(gè)集合合并成一個(gè)新集合,以便通過可以對(duì)這個(gè)新集合進(jìn)行掃描,并處理該集合中的每一個(gè)元素。使用時(shí)需要指定
13、一個(gè) id 屬性,該屬性指定一個(gè)新集合的名字。在中可以指定多個(gè)子,每一個(gè)子指定一個(gè)集合。下面的代碼將兩個(gè)集合合并成一個(gè)集合,并使用個(gè)元素:輸出合并集合中的每一在瀏覽器地址欄中輸入如下的 URL:end.jsp瀏覽器顯示的信息如圖 13.5 所示。除了可以合并多個(gè)集合外,還可以合并 Map 類型的對(duì)象,甚至可以將 Map 類型的對(duì)象和 List對(duì)象進(jìn)行合并,如下面的代碼所示:圖 13.5 使用append合并兩個(gè)集合,飛流直下三千尺,疑是,Visual Studio:408tr style=background-color:#CCCCCCtr s:if test=#ss:propertys:pr
14、opertyus.oddstyle=background-color:#CCCCCCvalue=key/value=value/如果將 List 對(duì)象和 Map 對(duì)象合并,將生成一個(gè)新的 Map 對(duì)象,而且 List 對(duì)象的元素都將作為新 Map對(duì)象的 key,而 value 為空。在瀏覽器地址欄中輸入如下的 URL:append.jsp瀏覽器顯示的信息如圖 13.6 所示。圖 13.6使用 append合并 List 和 Map13.2數(shù) 據(jù)數(shù)據(jù)主要用于提供各種與數(shù)據(jù)相關(guān)的功能,如創(chuàng)建一個(gè)類的對(duì)象實(shí)例、輸出國(guó)際化信息和包含其他的 Web 資源等。本節(jié)將介紹如下幾個(gè)數(shù)據(jù):action:該用于在
15、 JSP 頁面中直接使用一個(gè) Action,可以將 executeResult 屬性設(shè)為true,還可以將該 Action 的處理結(jié)果直接包含到本頁面中。bean:該用于創(chuàng)建一個(gè) JavaBean 對(duì)象實(shí)例。如果指定 id 屬性,可以將創(chuàng)建的 JavaBean對(duì)象實(shí)例放入 Stack Context 中。include:該param:該set:該用于在 JSP 頁面中包含其他的 Web 資源(如 JSP、Servlet 等)。用于設(shè)置一個(gè)參數(shù),通常作為 bean、append 等的子。用于定義一個(gè)新變量,并將該變量保存在指定的范圍內(nèi)。property:該中的值。用于輸出某個(gè)值,包括輸出 Val
16、ueStack、Stack Context 和 Action Context13.2.1actionaction允許在 JSP 頁面中調(diào)用 Action。在Action 時(shí),Action 的名字是必不可少的。當(dāng)然,如果 Action 所在的包指定了 namespace 屬性,還必須在調(diào)用 Action 時(shí)指定 namespace。除了調(diào)用 Action 外,action包含在當(dāng)前頁面中。action還可以通過 executeResult 屬性選擇是否將處理結(jié)果(視圖資源)有如下幾個(gè)屬性:name:該屬性指定了要調(diào)用的 Action 的名字。id:該屬性指定了要Action 的對(duì)象實(shí)例。的 Ac
17、tion 的對(duì)象實(shí)例名,在 JSP 頁面中可以通過該名字來409namespace:該屬性指定了 Action名空間名。executeResult:該屬性指定了是否將處理結(jié)果頁面包含在當(dāng)前頁面中。該屬性的默認(rèn)值為 true,即包含處理結(jié)果頁面。executeResult 屬性的默認(rèn)值為 false,即不包含。ignoreContextParams:該屬性指定是否將當(dāng)前頁面的請(qǐng)求參數(shù)傳給 action的Action。該屬性的默認(rèn)值為 false,即將當(dāng)前頁面的請(qǐng)求參數(shù)傳入被的 Action。flush:該屬性指定了是否應(yīng)該在 action結(jié)束時(shí)刷新緩存。該屬性的默認(rèn)值為 true,即在 acti
18、on結(jié)束時(shí)刷新緩存。下面的 Action 類將在 JSP 頁面中被調(diào)用。這個(gè) Action 類非常簡(jiǎn)單,有一個(gè) value 屬性(該屬性用于封裝請(qǐng)求參數(shù))和一個(gè)邏輯處理方法 execute。該 Action 類的實(shí)現(xiàn)代碼如下:MyAction 類的配置代碼如下:其中 succ.jsp 是 sucs 結(jié)果轉(zhuǎn)入的頁面,代碼如下:410調(diào)用成功調(diào)用成功,value=/chapter13/succ.jsppackage chapter13;import com.opensymphony.xwork2.*;public class MyAction extendionSupportprivate Str
19、ing value; public String getValue()return value;public void setValue(String value)this.value=value;Overridepublic String execute()throws Exceptionreturn SUCS;下面的 JSP 代碼通過來MyAction:在上面的 JSP 代碼中,通過 executeResult 屬性來控制是否將 Action 的處理結(jié)果包含在當(dāng)前頁面中。并在第一次調(diào)用 MyAction 時(shí)將的 id 屬性設(shè)為 myAction,然后通過如在瀏覽器地址欄中輸入如下的 URL
20、:瀏覽器顯示的信息如圖 13.7 所示。從圖 13.7 顯示的內(nèi)容可以看出,在action.jsp 頁面時(shí)包含了一個(gè)名為 value 的請(qǐng)求參數(shù),而在第一次MyAction 時(shí),將請(qǐng)求參數(shù)傳給了 MyAction,因此,在頁面中輸出了請(qǐng)求參數(shù)411action調(diào)用Action,將結(jié)果包含到本頁面中,并將請(qǐng)求參數(shù)傳入Action直接Action 的屬性:MyAction.value:調(diào)用Action,將結(jié)果包含到本頁面中,未將請(qǐng)求參數(shù)傳入Action調(diào)用Action,未將結(jié)果包含到本頁面中,將請(qǐng)求參數(shù)傳入Action直接獲得請(qǐng)求參數(shù),value=直接Action 的屬性:MyAction.val
21、ue:的值。而在第二次MyAction 時(shí),并未將請(qǐng)求參數(shù)傳入 MyAction,因此,在 succ.jsp 中輸出的 value 屬性值為空串。而在第三次調(diào)用 MyAction 時(shí),雖然未包含處理結(jié)果頁面,但仍然將請(qǐng)求參數(shù)傳入 MyAction,因此,通過 MyAction 對(duì)象實(shí)例的 value 屬性仍然可以輸出請(qǐng)求參數(shù)值。圖 13.7使用 action調(diào)用 Action13.2.2beanbean用于創(chuàng)建一個(gè) JavaBean 的對(duì)象實(shí)例。如果在創(chuàng)建JavaBean 對(duì)象時(shí),需要設(shè)置 JavaBean的屬性,可以在 bean體內(nèi)使用。從技術(shù)層面看,bean和 action該 Action
22、,而都可以調(diào)用 Action 類,但 action的調(diào)用相當(dāng)于通過 Action 的 Web 路徑bean只是簡(jiǎn)單地創(chuàng)建 Action 類的對(duì)象實(shí)例,相當(dāng)于 Java 中的 new 關(guān)鍵字。在使用 bean 和action時(shí)應(yīng)注意它們的區(qū)別。bean有如下幾個(gè)屬性:name:該屬性指定要?jiǎng)?chuàng)建對(duì)象實(shí)例的 JavaBean 的實(shí)現(xiàn)類。id:該屬性指定了 JavaBean 對(duì)象的實(shí)例名。如果指定該屬性,則 JavaBean 的對(duì)象實(shí)例會(huì)被放入 Stack Context(不是 ValueStack)中,并允許通過 id 屬性所指的對(duì)象實(shí)例名來訪問該 JavaBean 的對(duì)象實(shí)例。由于 bean在創(chuàng)建
23、 JavaBean 對(duì)象時(shí),將該對(duì)象放在了 ValueStack 的棧頂,因此,在 bean體內(nèi)可以直接使用 JavaBean 的屬性。一旦 bean結(jié)束,JavaBean 對(duì)象會(huì)從 ValueStack的棧頂刪除,這時(shí)要想象實(shí)例名。該 JavaBean 對(duì)象,必須在 bean中使用 id 屬性指定 JavaBean 對(duì)下面是一個(gè)簡(jiǎn)單的 JavaBean,這個(gè) JavaBean 將在 JSP 頁面中被。該JavaBean 有兩個(gè)屬性:name 和 grade,這兩個(gè)屬性在中輸出這兩個(gè)屬性值。中被賦值,并在當(dāng)前頁面412下面的 JSP 代碼通過創(chuàng)建了 Student 的對(duì)象實(shí)例,并在體內(nèi)為該對(duì)象
24、的兩個(gè)屬性賦值,并輸出這兩個(gè)屬性的值:在瀏覽器地址欄中輸入如下的 URL:瀏覽器顯示的信息如圖 1如果想在對(duì)象實(shí)例,可以在 JSP 代碼所示:示。外使用該創(chuàng)建的 JavaBean中指定 id 屬性,如下面的圖 13.8使用 bean創(chuàng)建JavaBean 的對(duì)象實(shí)例413 Student 的屬性值: name:grade:package chapter13; public class Studentprivate String name; privategrade;/name 屬性的 getter 方法public String getName()return name;/name 屬性的 se
25、tter 方法public void setName(String name)=name;/grade 屬性的 getter 方法publicgetGrade()return grade;/grade 屬性的 setter 方法public void setGrade(grade)this.grade=grade;在上面的 JSP 頁面后,將會(huì)得到和圖 13.8 完全相同的輸出信息。13.2.3includeinclude如下幾個(gè)屬性:用于在當(dāng)前頁面包含另外一個(gè) Web 資源,如 Html、JSP、Servlet 等。該有value:該屬性指定被包含的 Web 資源的 URL
26、,如 included.jsp、/chapter3/css html 等。id:該屬性指定 include的 ID。給被包含的 Web 資源傳遞請(qǐng)求參數(shù)。在下面的 JSPinclude還可以通過代碼中,通過 include包含了一個(gè) css.html 頁面和一個(gè) included.jsp 頁面:在瀏覽器地址欄中輸入如下的 URL:瀏覽器顯示的信息如圖 13.9 所示。圖 13.9使用 include包含其他的頁面414include css.html 頁面的內(nèi)容Student 的屬性值: name: grade:13.2.4paramparam主要用于為其他的下幾個(gè)參數(shù):提供參數(shù),如 incl
27、ude、append 等。param有如name:該屬性指定要設(shè)置的參數(shù)名。value:該屬性指定要設(shè)置的參數(shù)值。id:該屬性指定該元素的 ID。param是 param除了可以通過 value 指定參數(shù)值外,還可以在 param的兩種用法,通過 value 屬性指定參數(shù)值:體中指定參數(shù)值,下面在 param體中指定參數(shù)值:bill上面兩條語句為 name 屬性設(shè)置了一個(gè)字符串值(bill)。在使用3 點(diǎn)需要注意:時(shí)有如下在為屬性設(shè)置字符串值時(shí),如果使用 value 屬性設(shè)置該值,需要加單引號(hào)(),如果使用param體設(shè)置該值時(shí),不需要加單引號(hào)()。如果使用 value 屬性指定參數(shù)值時(shí)未加單
28、引號(hào),則表示該值是一個(gè)對(duì)象,如果該對(duì)象不存在,則為屬性賦 null 值。如果在 param中指定 name 屬性,則外層指定的對(duì)象必須有該屬性相對(duì)應(yīng)的 setter方法,如果外層Parametric 接口。指定的對(duì)象沒有相應(yīng)的 setter 方法,則外層必須實(shí)現(xiàn) Unnamed13.2.5propertyproperty的作用就是輸出指定的值。該輸出的值用 value 屬性指定,如果未指定該有如下幾個(gè)屬性:屬性,則輸出 ValueStack 棧頂?shù)闹?。propertyvalue:該屬性指定需要輸出的值,如果未指定該屬性的值,則默認(rèn)輸出 ValueStack 棧頂?shù)闹?。default:如果需要輸
29、出的值為 null,則輸出 default 屬性指定的值。esc:該屬性指定是否忽略輸出值中的 HTML 代碼,該屬性的默認(rèn)值是 true,即忽略輸出值中的 HTML 代碼。id:該屬性指定property的 ID 值。的主要功能,讀者也可以參下面的代碼演示了的使用方法。面章節(jié)中的415property在瀏覽器地址欄中輸入如下的 URL:瀏覽器顯示的信息如圖 13.10 所示。13.2.6setset用于將某一個(gè)值保存在指定的范圍內(nèi), 例如application 范圍、request 范圍等。如果某個(gè)值需要很深的訪問層次的話,例如 ,在每次該值時(shí)不僅會(huì)降低性
30、能,而且會(huì)使程序變得不易,為了避免這個(gè)問題,可以使用 set將該值保存在指定的范圍內(nèi),當(dāng)圖 13.10使用 property 輸出信息有如下幾個(gè)屬性:再次該值時(shí),只需要從某個(gè)范圍取得該值即可。setname:該屬性指定一個(gè)新的變量名。value:該屬性指定賦給新變量的值,如果未指定該屬性,則將 ValueStack 棧頂?shù)闹蒂x給新變量。scope:該屬性指定保存變量的范圍,該屬性可以是 application、ses、request、page和 action 5 個(gè)范圍。如果未指定該屬性,則默認(rèn)將變量保存在 Stack Context 中。id:該屬性指定該的 ID 值。下面的代碼將 stud
31、ent 對(duì)象及其屬性值分別保存在了 application、ses默認(rèn)的 Stack Context 中,而且將變量保存在 Stack Context 時(shí)由于未指定 set、request、page 和的 value 屬性,因此,setpush會(huì)取 ValueStack 棧頂?shù)闹蒂x給新變量。而頁面當(dāng)前 ValueStack 棧頂?shù)闹凳峭ㄟ^放入的。416set將 保存在 application 中s:property value=name esc=true/s:property value=name esc=false/在瀏覽器地址欄中輸入如下的 URL:瀏覽器顯示的信
32、息如圖 13.11 所示。單擊【Debug】,可以看到不同范圍中的 student 對(duì)象及其屬性的值,如圖 13.12 所示。圖 13.11使用 set將某個(gè)值保存在圖 13.12使用 debug顯示保存在指定的范圍內(nèi)不同范圍內(nèi)的變量值417將 student.grade 保存在 ses中將 student.grade 保存在 request 中將 Student 對(duì)象保存在 page 中將 student 對(duì)象放到 ValueStack 的棧頂,并保存在 Stack Context 中13.3表 單Struts 2 的表單通常用于向服務(wù)端提交用戶輸入的信息。大多數(shù)表單都有與其對(duì)應(yīng)的HTML的
33、表單,例如,對(duì)應(yīng)于 HTML 中的。在 Struts 2中有很多屬性,這些屬性中的大多數(shù)都和相應(yīng)的 HTML相對(duì)應(yīng)。13.3.1form、submit 和 resetform、submit 和 reset分別和 HTML 表單的 form、submit 以及 reset 相對(duì)應(yīng)。其中 form是其他表單的上一層??梢酝ㄟ^ form的 action 屬性指定 Action 名字,Struts 2中的 form的 action 屬性不能是其他的 Web 資源,因?yàn)楸韱卧谔峤粫r(shí)會(huì)在 action 屬性值后面加上.action。如果 action 屬性指定的 Action 需要指定命名空間,則需要指定
34、屬性,代碼如下:的 namespace上面的代碼提交時(shí)會(huì)產(chǎn)生如下的 URL:其中/ssubmitles 是上下文路徑,/action 是命名空間。用于提交表單,reset用于將當(dāng)前表單中所有的表單元素都恢復(fù)到默認(rèn)值,也就是在加載頁面時(shí),表單元素的 value 屬性的初始值,如下面的代碼如示:上面的代碼是一個(gè)典型的表單,在該表單中有兩個(gè)文本框,其中【】文本框的 value 屬性有一個(gè)默認(rèn)值,而【】文本框的默認(rèn)值為空串,【學(xué)生】復(fù)選框的默認(rèn)值為未選中。在瀏覽器地址欄中輸入如下的 URL 會(huì)顯示圖 13.13 所示的頁面。418form、reset、submit13/registor.jsp】按鈕會(huì)
35、向 register 動(dòng)作提交,單擊單擊【重置】按鈕,會(huì)將表單中相應(yīng)的表單元素恢復(fù)到默認(rèn)值,也就是 value 屬性的值。13.3.2checkboxlistcheckboxlist可以地創(chuàng)建多個(gè)復(fù)選框,也就是說,可以地生成多個(gè)圖 13.13form.jsp 頁面的顯示效果。checkboxlist有如下幾個(gè)常用屬性:list:該屬性指定要生成的復(fù)選框的數(shù)據(jù)。該屬性值可以是數(shù)組、List、Map 和對(duì)象數(shù)組等類型。如 list=checkbox1, checkbox2。listKey:如果 list 屬性值是對(duì)象數(shù)組,則該屬性表示對(duì)象中作為 key 的屬性,如 product.id。listV
36、alue :如果 list 屬性值是對(duì)象數(shù)組,則該屬性表示對(duì)象中作為 value 的屬性,如product name。下面的代碼使用 3 個(gè) checkboxlist生成了 3 個(gè)項(xiàng),這 3 個(gè) checkboxlist 的 list 屬性值分別是 List 對(duì)象、Map 對(duì)象和對(duì)象數(shù)組。上面代碼中的第 3 個(gè) checkboxlist使用了 Cities 類的 cities 屬性返回了一個(gè)對(duì)象數(shù)組,該對(duì)象是 City 類的實(shí)例。City 類的實(shí)現(xiàn)代碼如下:419checkboxlistCities 類的實(shí)現(xiàn)代碼如下:在 checkboxlist.jsp 頁面中還涉及一個(gè) investigat
37、e 動(dòng)作,該動(dòng)作對(duì)應(yīng)的 Action 類是 Investigate Action,在該類中定義了 3 個(gè)屬性,分別對(duì)應(yīng) 3 個(gè) checkboxlist 表單提交的值,InvestigateAction類的實(shí)現(xiàn)代碼如下:420package chapter13;import com.opensymphony.xwork2.*;public class InvestigateAction extendionSupportpackage chapter13; public class Citiespublic City getCities()City cities=new City4; citie
38、s0=new City(bj, );cities1=new City(sh, );cities2=new City(gz, 廣州);cities3=new City(others, 其他); return cities;package chapter13; public class Cityprivate String abbreviation; private String name;public City(String abbreviation, String name)this.abbreviation=abbreviation; =name;public String
39、 getAbbreviation()return abbreviation;public void setAbbreviation(String abbreviation)this.abbreviation=abbreviation;public String getName()return name;public void setName(String name)=name;InvestigateAction 類的配置代碼如下:用于顯示用戶結(jié)果的 investigate.jsp 頁面的代碼如下:421結(jié)果/chapter13/investigate.jspprivate S
40、tring hobbies;private java.util.Listj2eeServers; private java.util.Listcities; public java.util.ListgetCities()return cities;public void setCities(java.util.Listcities)this.cities=cities;public java.util.ListgetJ2eeServers()return j2eeServers;public void setJ2eeServers(java.util.List servers)j2eeSer
41、vers=servers;public String getHobbies()return hobbies;public void setHobbies(String hobbies)this.hobbies=hobbies;Overridepublic String execute()throws Exceptionreturn SUCS;在瀏覽器中輸入如下的 URL:瀏覽器顯示頁面后,按圖 13.14 所示選擇復(fù)選框,單擊【確定】按鈕提交結(jié)果,瀏覽器顯示的信息如圖 13.15 所示。圖 13.14使用 checkboxlist生成多個(gè)復(fù)選框圖 13.15顯示結(jié)果13.3.3combobox
42、combobox用于生成一個(gè)單行文本框和下拉列表框的組合,但這兩個(gè)元素對(duì)應(yīng)于一個(gè)請(qǐng)求參數(shù),只有單行文本框中的值才是請(qǐng)求參數(shù)真正的值,而下拉列表框只是起到了輔助輸入的作用。在使用該時(shí),需要通過一個(gè) list 屬性來指定 combobox中列表項(xiàng)的數(shù)據(jù)源,該數(shù)據(jù)源可以是數(shù)組、List、Map 和對(duì)象數(shù)組。下面的代碼中的 combobox對(duì)象:的 list 屬性是一個(gè) List如果 list 屬性是一個(gè)數(shù)組或 List 對(duì)象,則選擇下拉列表框后,被選中的項(xiàng)的相應(yīng)信息就會(huì)被賦給單行文本框。在瀏覽器地址欄中輸入如下的 URL:bobox.jsp在下拉列表框中選擇其中任意一項(xiàng),會(huì)出現(xiàn)圖 13.16 所示的效果。從圖 13.16 可以看出,被選中的“Android/OPhone 開發(fā)完全講義”列表項(xiàng)被賦給了上面的單行文本框。如果 list 屬性值是 Map 對(duì)象或?qū)ο髷?shù)組,則選中列表值是 Map 或?qū)ο髷?shù)組中相應(yīng)元素的 key,如下面的代碼如下:,被賦給單行文本框的422bobox name=book label=請(qǐng)選擇您感的 labelition=top在上面的代碼中,第一個(gè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年土地使用權(quán)轉(zhuǎn)讓合同(含開發(fā)權(quán))
- 2024年廣西路分公司一級(jí)干線租用合同
- 2024年安全監(jiān)控外包服務(wù)合同
- 2024年工程設(shè)計(jì)變更合同補(bǔ)充
- 2024年度石油化工設(shè)備安裝調(diào)試合同
- 2024年工廠租賃合同書
- 2024年度塔吊設(shè)計(jì)研發(fā)合同
- 2024購房合同應(yīng)注意事項(xiàng)
- 2024征地補(bǔ)償安置合同范本
- 2024年學(xué)校治安門衛(wèi)合同
- 北科大巖石力學(xué)-李長(zhǎng)洪1.2-巖石的力學(xué)性質(zhì)
- 國(guó)開(河北)2024年秋《現(xiàn)代產(chǎn)權(quán)法律制度專題》形考作業(yè)1-4答案
- 新商科“專業(yè)-產(chǎn)業(yè)雙鏈融通式”人才培養(yǎng)模式探究
- 公務(wù)員2018年國(guó)考《申論》真題卷及答案(副省級(jí))
- 2024年基金從業(yè)資格證(含三個(gè)科目)考前必刷必練題庫500題(含真題、必會(huì)題)
- 路燈改造施工方案
- 湖北省武漢市東湖新技術(shù)開發(fā)區(qū)武漢光谷未來學(xué)校2024-2025學(xué)年八年級(jí)上學(xué)期數(shù)學(xué)期中試卷
- 3.14 絲綢之路的開通與經(jīng)營(yíng)西域 課件 2024-2025學(xué)年部編版
- 第三單元《分?jǐn)?shù)除法》(單元測(cè)試)-2024-2025學(xué)年六年級(jí)上冊(cè)數(shù)學(xué)人教版
- 部編版2023-2024學(xué)年度六年級(jí)上冊(cè)語文期中測(cè)試卷(附答案)
- 食品安全自查、從業(yè)人員健康管理、進(jìn)貨查驗(yàn)記錄、食品安全事故處置保證食品安全規(guī)章制度
評(píng)論
0/150
提交評(píng)論