- 論壇徽章:
- 0
|
學(xué)習(xí)Struts提供的和Form相關(guān)的標(biāo)簽
在本文系列的第一部分中我講述了如何使用Struts提供的HTML標(biāo)簽庫(kù)來(lái)配置一個(gè)Struts應(yīng)用程序。我還介紹了該標(biāo)簽庫(kù)中的一類標(biāo)簽:獨(dú)立使用的標(biāo)簽。在第二部分中我將繼續(xù)介紹第二類標(biāo)簽:與form相關(guān)的標(biāo)簽。與form相關(guān)的標(biāo)簽包括標(biāo)簽本身以及所有必須包含在其中的標(biāo)簽。比如,和標(biāo)簽就是和form相關(guān)的標(biāo)簽,因?yàn)槿绻话阉鼈兎诺揭粋(gè)form中它們就沒(méi)有意義。
標(biāo)簽
標(biāo)簽用于生成一個(gè)HTML form。使用該標(biāo)簽時(shí)必須遵循許多規(guī)則。
首先,標(biāo)簽中必須包含一個(gè)action屬性,它是這個(gè)標(biāo)簽中唯一必需的屬性。如果不具備該屬性則JSP頁(yè)面會(huì)拋出一個(gè)異常。之后你必須給這個(gè)action屬性指定一個(gè)有效值。一個(gè)有效值是指應(yīng)用程序的Struts配置文件中元素里的任何一個(gè)子元素的訪問(wèn)路徑。而且相應(yīng)的元素中必須有一個(gè)name屬性,它的值是form bean的名稱。例如,如果你有這樣一個(gè)標(biāo)簽:
那么你的Struts配置文件的元素中必須有一個(gè)如下顯示為粗體的元素:
這就是說(shuō)一個(gè)form標(biāo)簽是和form bean相關(guān)聯(lián)的。
另一個(gè)要遵循的規(guī)則是:任何包含在中用來(lái)接收用戶輸入的標(biāo)簽(、、、、、、)必須在相關(guān)的form bean中有一個(gè)指定的屬性值。比如,如果你有一個(gè)屬性值被指定為“username”的標(biāo)簽,那么相關(guān)的form bean中也必須有一個(gè)名為“username”的屬性。輸入標(biāo)簽中的值會(huì)被用于生成form bean的userName屬性。
除了上面所講的屬性之外,標(biāo)簽還有一些不是必須但加上更好的“次要”的屬性。比如,你可以用focus屬性來(lái)生成JavaScript,它會(huì)“定焦”(focus)到該form所包含的一個(gè)元素上。使用focus屬性時(shí)你需要給它指定元素的名稱。比如,以下代碼是定焦在第二個(gè)Text元素上的:
User Name:
Password:
該段代碼會(huì)被轉(zhuǎn)換成:
User Name:
Password:
注意,標(biāo)簽中method屬性的缺省值是POST。另外,有沒(méi)有看到這個(gè)標(biāo)簽庫(kù)是如何建立JavaScript來(lái)定焦到password元素上的? 這也是該庫(kù)讓人著迷的地方之一。你不用擔(dān)心如何在客戶端進(jìn)行編程,它會(huì)幫你自動(dòng)生成。
在運(yùn)行前面的例子時(shí)還要注意,你必須有一個(gè)包含userName和password屬性的相關(guān)form。你可以參考本文第三部分中的Login程序。
標(biāo)簽
標(biāo)簽用于生成一個(gè)文本的輸入?yún)^(qū)域。它必須包含和相關(guān)form bean中的相同屬性對(duì)應(yīng)的“property”屬性。該標(biāo)簽只有在嵌入到一個(gè)標(biāo)簽中時(shí)才有效。
例如:
會(huì)被轉(zhuǎn)換成:
標(biāo)簽
標(biāo)簽用于生成一個(gè)口令字(type password)的輸入?yún)^(qū)域。它必須包含和相關(guān)form bean中的相同屬性對(duì)應(yīng)的“property”屬性。該標(biāo)簽只有在嵌入到一個(gè)標(biāo)簽中時(shí)才有效。該標(biāo)簽中的一個(gè)很重要的屬性是“redisplay”,它用于重新顯示以前輸入到這個(gè)區(qū)域中的值。該屬性的缺省值為true。然而,為了使password不能被重新顯示,你或許希望將該屬性的值設(shè)為false。
例如:
會(huì)被轉(zhuǎn)換成:
標(biāo)簽
標(biāo)簽用于生成一個(gè)隱藏文本的輸入?yún)^(qū)域。它必須包含和相關(guān)form bean中的相同屬性對(duì)應(yīng)的“property”屬性。該標(biāo)簽只有在嵌入到一個(gè)標(biāo)簽中時(shí)才有效:
例如:
會(huì)被轉(zhuǎn)換成:
標(biāo)簽
標(biāo)簽用于生成一個(gè)文本區(qū)元素(text area element)。它必須包含和相關(guān)form bean中的相同屬性對(duì)應(yīng)的“property”屬性。
比如:
會(huì)被轉(zhuǎn)換成:Enter details here
標(biāo)簽
標(biāo)簽用于顯示一個(gè)單選按鈕(radio button)。它必須包含“value”屬性。比如這段代碼:
Mr.
Ms.
Dr.
會(huì)被轉(zhuǎn)換成這樣的HTML:
Mr.
Ms.
Dr.
標(biāo)簽
標(biāo)簽用于顯示checkbox類型的輸入?yún)^(qū)域。比如:
Please send me notification
會(huì)被轉(zhuǎn)換成:Please send me notification
標(biāo)簽
標(biāo)簽用于生成提交類型(type submit)的輸入?yún)^(qū)域。比如:
會(huì)被轉(zhuǎn)換成:
標(biāo)簽
標(biāo)簽用于生成重置類型(type reset)的輸入?yún)^(qū)域。比如:
會(huì)被轉(zhuǎn)換成:
標(biāo)簽
標(biāo)簽用于顯示select box中的一個(gè)選項(xiàng)。參照下面的標(biāo)簽。
標(biāo)簽
標(biāo)簽用于顯示一個(gè)包含零個(gè)或更多選項(xiàng)的HTML選擇元素。它必須被嵌入一個(gè)標(biāo)簽中才有效。下面這個(gè)例子將說(shuō)明如何使用該標(biāo)簽:
red
green
blue
會(huì)被轉(zhuǎn)換成:
red
green
blue
在本文系列的第二部分,你學(xué)到了一些更重要的和form相關(guān)的標(biāo)簽。在使用這些標(biāo)簽之前,你必須依照一些規(guī)則以便正確地運(yùn)用它們。第三部分將講述如何在真正的程序中使用這些標(biāo)簽。
Bean標(biāo)記庫(kù):
使用該標(biāo)記前首先要在jsp的頁(yè)面導(dǎo)入相應(yīng)的標(biāo)記定義,例如
。
使用的方法如。
下面對(duì)該標(biāo)記庫(kù)做一介紹:
1. cookie :屬性有id,name , multiple,value,id是對(duì)cookie在該頁(yè)面中的唯一標(biāo)識(shí),在頁(yè)面其它地方可以通過(guò)id進(jìn)行引用。相當(dāng)于用cookie直接引用。Name是相應(yīng)的cookie名稱。Multiple可以賦予任意值,如果該值被定義將會(huì)返回相應(yīng)給定值數(shù)量的cookie數(shù)組,如果該值沒(méi)有被定義Value在這里是一個(gè)默認(rèn)值,當(dāng)我們這里的調(diào)用的cookie不存在時(shí),其值為我們這里的value值。
2.define:相當(dāng)于jsp標(biāo)記,屬性有id、name、property、scope、toScope、type、value。Id和cookie中的id起到了同樣的作用;name是在相應(yīng)的scope中唯一bean標(biāo)識(shí);scope將會(huì)在相應(yīng)的范圍內(nèi)進(jìn)行相應(yīng)的查找;toScope如果在scope中找不見(jiàn)相應(yīng)的bean,將會(huì)在toScope中建立相應(yīng)的bean;type是該類完全類路徑和類。
例如:
例如:
3.header:通過(guò)該標(biāo)記可以訪問(wèn)相應(yīng)頁(yè)面請(qǐng)求的頭的信息,具體屬性有id、multiple、name、value。具體的含義和cookie的類似。
例如:
"/>
4.Include:屬性有id、name、forward、anchor、href、transacttion、page。屬性的說(shuō)明參考相應(yīng)apache的網(wǎng)站。
例如:
message: 不常用,這里忽略。
page:不常用,這里忽略。
Parameter:屬性有id、name、value、multiple。用來(lái)輸出客戶端的請(qǐng)求參數(shù)和值。
例如:
resource:屬性有id、name、input。如果input屬性被定義為任意值,導(dǎo)入的資源將會(huì)返回一個(gè)InputStream對(duì)象。如果不被定義的話,資源將會(huì)以字符串的方式返回。
例如:
size:用來(lái)對(duì)Cellection 或者M(jìn)ap類型的數(shù)據(jù)進(jìn)行元素個(gè)數(shù)統(tǒng)計(jì)。屬性有:id、collection、name、property、scope。
例如:
"/>
struts: 不常用,這里忽略。
Write: 屬性有bundle、filter、format、formatKey、ignore、local、name、property、scope。具體用法請(qǐng)參閱相關(guān)網(wǎng)站。
Html標(biāo)記庫(kù):
使用該標(biāo)記庫(kù)首先要在相應(yīng)的頁(yè)面中引入標(biāo)記庫(kù)定義文件,如:
。其實(shí)該標(biāo)記庫(kù)的大多數(shù)標(biāo)記可以用html的標(biāo)記來(lái)實(shí)現(xiàn)。這里值對(duì)其無(wú)法用html實(shí)現(xiàn)的幾個(gè)標(biāo)記進(jìn)行介紹。
Error: 屬性有:bundle、name、property、local。如果以上屬性都不定義,將會(huì)從對(duì)屬性文件中的所有error.***錯(cuò)誤信息顯示出來(lái)。Bundle,邦定的錯(cuò)誤信息管理器,如果沒(méi)有定義,將默認(rèn)是由action創(chuàng)建的應(yīng)用程序級(jí)錯(cuò)誤管理器。Name和property用來(lái)配合從相應(yīng)的頁(yè)面中調(diào)用錯(cuò)誤信息管理bean來(lái)顯示錯(cuò)誤信息。Local是一個(gè)錯(cuò)誤信息本地化處理器,默認(rèn)會(huì)用是和本地的方式處理本地化。
屬性資源文件中應(yīng)該包含如下相應(yīng)的信息,對(duì)錯(cuò)誤信息的現(xiàn)實(shí)進(jìn)行格式化:
errors.header 所有錯(cuò)誤信息前面顯示的內(nèi)容,可以進(jìn)行html修飾
errors.footer 所有錯(cuò)誤信息后面的顯示內(nèi)容,可以進(jìn)行html修飾
errors.prefix 每條錯(cuò)誤信息前面的顯示信息,可以進(jìn)行html修飾
errors.suffix 每條錯(cuò)誤信息后面的顯示信息,可以進(jìn)行html修飾
message: 屬性有bundle、footer、header、id、local、message、property、name.具體的用法請(qǐng)參閱相關(guān)網(wǎng)站。
Logic標(biāo)記庫(kù):使用該標(biāo)記庫(kù)首先要在相應(yīng)的頁(yè)面中引入標(biāo)記庫(kù)定義文件,如:,具體的標(biāo)記有:
Empty: 屬性有name、property、scope。
Equal: 屬性有cookie、header、name、parameter、property、scope、value。其中cookie和header、parameter是獨(dú)立使用的。Name和property、scope結(jié)合使用,是相對(duì)系統(tǒng)中的bean的。如果是系統(tǒng)中某一個(gè)簡(jiǎn)單的參數(shù),可以用name和scope結(jié)合就可以了。
Forward: 屬性只有name。
GreaterEqual: 屬性和equal一樣。
GreaterThan:屬性和equal一樣。
LessEqual: 屬性和equal一樣。
LessThan: 屬性和equal一樣。
NotEmpty: 屬性和empty一樣。
Match: 屬性和equal一樣。
NotMatch:屬性和equal一樣。
NotEqual: 屬性和equal一樣。
NotPresent: 屬性有coolie、header、name、property、parameter、scope、role、user。
Present:和notPresent一樣。
MessageNotPresent:屬性有message、name、property。
MessagePresent: 和messageNotPresent一樣。
Iterate: 屬性有collection、id、indexId、scope、name、property、length、offset、type。
本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/16722/showart_147976.html |
|