版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章Struts2類型轉(zhuǎn)換及輸入校驗(yàn)4.1Struts2內(nèi)置類型轉(zhuǎn)換器4.2自定義類型轉(zhuǎn)換器4.3數(shù)組和集合類型的轉(zhuǎn)換4.4Struts2輸入校驗(yàn)4.1Struts2內(nèi)置類型轉(zhuǎn)換器4.1.1常用類型轉(zhuǎn)換器對(duì)于大部分常用類型,程序員不用創(chuàng)建自己的類型轉(zhuǎn)換器,因?yàn)镾truts2可以完成大多數(shù)需要用到的默認(rèn)功能,這些常用的類型轉(zhuǎn)換器包括如下幾種。
boolean和Boolean:完成String和布爾型之間的轉(zhuǎn)換。
char和Character:完成String和字符型之間的轉(zhuǎn)換。
int和Integer:完成String和整型之間的轉(zhuǎn)換。
long和Long:完成String和長(zhǎng)整型之間的轉(zhuǎn)換。
float和Float:完成String和單精度浮點(diǎn)型之間的轉(zhuǎn)換。
double和Double:完成String和雙精度浮點(diǎn)型之間的轉(zhuǎn)換。
Date:完成String和日期類型之間的轉(zhuǎn)換,日期格式為用戶請(qǐng)求本地的SHORT格式。
數(shù)組:該類型在數(shù)據(jù)轉(zhuǎn)換時(shí),必須滿足需要轉(zhuǎn)換的數(shù)據(jù)中每一個(gè)元素都能轉(zhuǎn)換成數(shù)組的類型。但若程序員自定義類型轉(zhuǎn)換器,則要根據(jù)情況判斷。
集合:在使用集合類型轉(zhuǎn)換器時(shí),如果集合中的數(shù)據(jù)無(wú)法確定,可以先將其封裝到一個(gè)String類型的集合中,然后在用到某個(gè)元素時(shí)再進(jìn)行手動(dòng)轉(zhuǎn)換。4.1.2內(nèi)置轉(zhuǎn)換器的使用【實(shí)例4.1】建立一個(gè)簡(jiǎn)單的頁(yè)面,如圖4.1所示,讓客戶端填寫用戶信息,然后提交,在另一個(gè)頁(yè)面上顯示出所填信息。4.1.2內(nèi)置轉(zhuǎn)換器的使用1.創(chuàng)建Struts2項(xiàng)目建立項(xiàng)目,取項(xiàng)目名為“Struts2TypeConverter”。加載Struts2包及修改web.xml文件,配置Struts2,操作同【實(shí)例2.1】的第1步、第2步,不再贅述。2.構(gòu)造模型傳值本例中應(yīng)用了模型傳值方式,故需要構(gòu)造一個(gè)JavaBean(模型類)User.java。代碼如下:packageorg.vo;importjava.util.Date;publicclassUser{ privateStringusername; //姓名 privateStringpassword; //密碼 privateintage; //年齡 privateDatebir; //生日 privateStringtel; //電話 //這里省略上述屬性的get和set方法}4.1.2內(nèi)置轉(zhuǎn)換器的使用故converter.jsp頁(yè)面代碼可以寫為:<%@pagelanguage="java"pageEncoding="UTF-8"%><%@tagliburi="/struts-tags"prefix="s"%><html> <head> <title>類型轉(zhuǎn)換</title> </head> <body> <s:formaction="typeconverter"method="post"> <s:textfieldname="user.username"label="姓名"></s:textfield> <s:passwordname="user.password"label="密碼"></s:password> <s:textfieldname="user.age"label="年齡"></s:textfield> <s:textfieldname="user.bir"label="生日"></s:textfield> <s:textfieldname="user.tel"label="電話"></s:textfield> <s:submitvalue="提交"></s:submit> </s:form> </body></html>4.1.2內(nèi)置轉(zhuǎn)換器的使用3.編寫控制器Action自定義Action類“SimpleTypeConverter.java”的代碼如下:packageorg.action;importorg.vo.User;importcom.opensymphony.xwork2.ActionSupport;publicclassSimpleTypeConverterextendsActionSupport{
privateUseruser; publicUsergetUser(){ returnuser; } publicvoidsetUser(Useruser){ this.user=user; } publicStringexecute()throwsException{ returnSUCCESS; }}4.1.2內(nèi)置轉(zhuǎn)換器的使用struts.xml配置如下:…<struts> <packagename="default"extends="struts-default">
<actionname="typeconverter"class="org.action.SimpleTypeConverter"> <resultname="success">/show.jsp</result> </action> </package></struts>4.1.2內(nèi)置轉(zhuǎn)換器的使用4.編寫JSPAction類處理完成后跳轉(zhuǎn)到show.jsp頁(yè)面,代碼如下:<%@pagelanguage="java"pageEncoding="UTF-8"%><%@tagliburi="/struts-tags"prefix="s"%><html><head><title>類型轉(zhuǎn)換顯示界面</title></head><body>
姓名:<s:propertyvalue="user.username"/><br>
密碼:<s:propertyvalue="user.password"/><br>
年齡:<s:propertyvalue="user.age"/><br>
生日:<s:propertyvalue="user.bir"/><br>
電話:<s:propertyvalue="user.tel"/><br></body></html>4.1.2內(nèi)置轉(zhuǎn)換器的使用運(yùn)行該程序,提交后出現(xiàn)如圖4.2所示的界面。4.2自定義類型轉(zhuǎn)換器4.2.1繼承DefaultTypeConverter類實(shí)現(xiàn)轉(zhuǎn)換器下面以一個(gè)簡(jiǎn)單實(shí)例說明?!緦?shí)例4.2】在圖4.3中的輸入欄輸入一個(gè)正確完整的電話后,單擊【提交】按鈕,出現(xiàn)如圖4.4所示的界面,分別輸出區(qū)號(hào)和電話號(hào)。
4.2.1繼承DefaultTypeConverter類實(shí)現(xiàn)轉(zhuǎn)換器1.創(chuàng)建Struts2項(xiàng)目建立項(xiàng)目,取項(xiàng)目名為“MyTypeConverter”。加載Struts2包及修改web.xml文件,配置Struts2,操作同【實(shí)例2.1】的第1步、第2步,不再贅述。2.構(gòu)造模型傳值本例依然采用模型傳值,構(gòu)造模型Tel類,Tel.java實(shí)現(xiàn)為:packageorg.vo;publicclassTel{ privateStringsectionNo; //區(qū)號(hào) privateStringtelNo; //電話號(hào) publicStringgetSectionNo(){ returnsectionNo; } publicvoidsetSectionNo(StringsectionNo){ this.sectionNo=sectionNo; } publicStringgetTelNo(){ returntelNo; } publicvoidsetTelNo(StringtelNo){ this.telNo=telNo; }}4.2.1繼承DefaultTypeConverter類實(shí)現(xiàn)轉(zhuǎn)換器對(duì)應(yīng)converter2.jsp頁(yè)面的代碼寫為:<%@pagelanguage="java"pageEncoding="UTF-8"%><%@tagliburi="/struts-tags"prefix="s"%><html><head> <title>自定義類型轉(zhuǎn)換器</title></head><body> <s:formaction="typeconverter2"method="post">
<s:textfieldname="tel"label="請(qǐng)輸入電話"></s:textfield> <s:submitvalue="提交"></s:submit> </s:form></body></html>4.2.1繼承DefaultTypeConverter類實(shí)現(xiàn)轉(zhuǎn)換器3.編寫控制器Action編寫Action類“MyTypeConverterAction”的代碼為:packageorg.action;importorg.vo.Tel;importcom.opensymphony.xwork2.ActionSupport;publicclassMyTypeConverterActionextendsActionSupport{ privateTeltel; publicStringexecute()throwsException{ returnSUCCESS; } publicTelgetTel(){ returntel; } publicvoidsetTel(Teltel){ this.tel=tel; }}在struts.xml文件中配置:<actionname="typeconverter2"class="org.action.MyTypeConverterAction"><resultname="success">/show2.jsp</result></action>4.2.1繼承DefaultTypeConverter類實(shí)現(xiàn)轉(zhuǎn)換器4.實(shí)現(xiàn)類型轉(zhuǎn)換器自定義類型轉(zhuǎn)換器需要實(shí)現(xiàn)Struts2框架提供的TypeConverter接口,但這個(gè)接口比較復(fù)雜,里面的convertValue方法參數(shù)太多,不容易實(shí)現(xiàn),Struts2框架于是提供了繼承該接口的實(shí)現(xiàn)類DefaultTypeConverter。該類結(jié)構(gòu)如下:publicclassognl.DefaultTypeConverterimplementsognl.TypeConverter{ publicDefaultTypeConverter();
publicjava.lang.ObjectconvertValue( java.util.Mapcontext, java.lang.Objectvalue, java.lang.ClasstoType ); publicjava.lang.ObjectconvertValue( java.util.Mapcontext, java.lang.Objecttarget, java.lang.reflect.Membermember, java.lang.StringprepertyName, java.lang.Objectvalue, java.lang.ClasstoType );}4.2.1繼承DefaultTypeConverter類實(shí)現(xiàn)轉(zhuǎn)換器該類中有兩個(gè)convertValue方法,其中第2個(gè)參數(shù)比較多的是TypeConverter類中的方法,所以繼承該方法后,只需重寫第1個(gè)convertValue方法即可。故本例中自定義類型轉(zhuǎn)換器可寫為。該類主要重寫了下面這個(gè)方法:publicObjectconvertValue(Mapcontext,Objectvalue,ClasstoType){}該方法中的參數(shù)有3個(gè),下面分別進(jìn)行介紹。
context:該參數(shù)就是類型轉(zhuǎn)換的上下文,也就是Action的上下文。
value:value是需要轉(zhuǎn)換的數(shù)據(jù),這個(gè)數(shù)據(jù)可以是String類型,或者是需要轉(zhuǎn)換的目標(biāo)類型。從頁(yè)面?zhèn)鬟f的數(shù)值有時(shí)可能不止一個(gè),例如,有幾個(gè)輸入框的名稱相同,那么value就有多個(gè)值,不能用單獨(dú)的String來(lái)接收值了,這時(shí)就必須用數(shù)組。這也就解釋了上面為什么把value轉(zhuǎn)換為字符串?dāng)?shù)組而不是字符串了。
toType:準(zhǔn)備轉(zhuǎn)換成的目標(biāo)類型。4.2.1繼承DefaultTypeConverter類實(shí)現(xiàn)轉(zhuǎn)換器5.注冊(cè)類型轉(zhuǎn)換器類型轉(zhuǎn)換器編寫完成后,需要注冊(cè),否則Struts2框架不知道用哪個(gè)類型轉(zhuǎn)換器對(duì)提交的數(shù)據(jù)進(jìn)行轉(zhuǎn)換。這里要把提交的字符串類型轉(zhuǎn)換為Action類中的tel屬性的Tel類型,故在該Action類所在路徑下編寫一個(gè)配置文件即可。該配置文件名稱必須遵守“action類名-perties”格式,所以本例的配置文件名為:“MyTypeConverterAperties”,并且同Action放在同一位置(這里是org.action包)下。在MyTypeConverterAperties文件中寫入如下注冊(cè)信息:tel=org.converter.MyTypeConverter配置文件內(nèi)容為“變量名=包名.類名”。4.2.1繼承DefaultTypeConverter類實(shí)現(xiàn)轉(zhuǎn)換器6.編寫JSP最后編寫顯示頁(yè)面show2.jsp,代碼如下:<%@pagelanguage="java"pageEncoding="UTF-8"%><%@tagliburi="/struts-tags"prefix="s"%><html><head><title>自定義類型轉(zhuǎn)換</title></head><body> <s:propertyvalue="tel"/><br>
區(qū)號(hào):<s:propertyvalue="tel.sectionNo"/><br>
號(hào)碼:<s:propertyvalue="tel.telNo"/></body></html>4.2.2繼承StrutsTypeConverter類實(shí)現(xiàn)轉(zhuǎn)換器【實(shí)例4.2】的運(yùn)行流程。首先,頁(yè)面?zhèn)鬟f的數(shù)據(jù)被Struts2攔截,根據(jù)struts.xml中的配置找到MyTypeConverterAction類,然后在系統(tǒng)環(huán)境中尋找是否含有該Action類對(duì)應(yīng)的MyTypeConverterAperties配置文件,如果找到,將其觸發(fā),對(duì)變量tel進(jìn)行類型轉(zhuǎn)換。完成后,執(zhí)行Action類中的execute方法,最后跳轉(zhuǎn)到show2.jsp頁(yè)面。可以看出,自定義的類型轉(zhuǎn)換器繼承了DefaultTypeConverter類,并重寫了其convertValue方法,里面用了一些if…else語(yǔ)句來(lái)判斷是從String向?qū)ο箢愋娃D(zhuǎn)換,還是從對(duì)象向String類型轉(zhuǎn)換(實(shí)際上,類型轉(zhuǎn)換也就兩個(gè)方向:當(dāng)接收數(shù)據(jù)時(shí)是從String向目標(biāo)類型轉(zhuǎn)換,而輸出時(shí)則是向String類型轉(zhuǎn)換),這樣難免有點(diǎn)麻煩,Struts2框架還提供了一個(gè)StrutsTypeConverter類,該類繼承了DefaultTypeConverter類。4.2.2繼承StrutsTypeConverter類實(shí)現(xiàn)轉(zhuǎn)換器該類的部分源代碼如下:publicabstractclassStrutsTypeConverterextendsDefaultTypeConverter{ publicObjectconvertValue(Mapcontext,Objecto,ClasstoClass){ if(toClass.equals(String.class)){ returnconvertToString(context,o); }elseif(oinstanceofString[]){ returnconvertFromString(context,(String[])o,toClass); }elseif(oinstanceofString){ returnconvertFromString(context,newString[]{(String)o},toClass); }else{ returnperformFallbackConversion(context,o,toClass);}} protectedObjectperformFallbackConversion(Mapcontext,Objecto,ClasstoClass){ returnsuper.convertValue(context,o,toClass); } publicabstractObjectconvertFromString(Mapcontext,String[]values,ClasstoClass); publicabstractStringconvertToString(Mapcontext,Objecto);}4.2.2繼承StrutsTypeConverter類實(shí)現(xiàn)轉(zhuǎn)換器故可以把【實(shí)例4.2】的自定義轉(zhuǎn)換器用繼承該類來(lái)實(shí)現(xiàn):packageorg.converter;importjava.util.Map;importorg.apache.struts2.util.StrutsTypeConverter;importorg.vo.Tel;publicclassMyStrutsTypeConverterextendsStrutsTypeConverter{
publicObjectconvertFromString(Maparg0,String[]arg1,Classarg2){ Telt=newTel(); String[]str=arg1[0].split("-"); t.setSectionNo(str[0]); t.setTelNo(str[1]); returnt; }
publicStringconvertToString(Maparg0,Objectarg1){ Telt=(Tel)arg1; return"["+t.getSectionNo()+"-"+t.getTelNo()+"]"; }}這樣就更簡(jiǎn)單明了地完成了類型轉(zhuǎn)換的工作。當(dāng)然,也要對(duì)該轉(zhuǎn)換器進(jìn)行注冊(cè),需要修改配置文件的內(nèi)容為:tel=org.converter.MyStrutsTypeConverter4.3數(shù)組和集合類型的轉(zhuǎn)換4.3.1數(shù)組類型轉(zhuǎn)換器【實(shí)例4.3】假如現(xiàn)在有這樣一個(gè)頁(yè)面,該頁(yè)面要求用戶輸入兩個(gè)電話號(hào)碼,然后提交后分別顯示其區(qū)號(hào)及號(hào)碼。頁(yè)面如圖4.5所示。4.3.1數(shù)組類型轉(zhuǎn)換器1.創(chuàng)建Struts2項(xiàng)目建立項(xiàng)目,取項(xiàng)目名為“ArrayTypeConverter”。加載Struts2包及修改web.xml文件,配置Struts2,操作同【實(shí)例2.1】的第1步、第2步,不再贅述。2.構(gòu)造模型傳值構(gòu)造Tel.java代碼與【實(shí)例4.2】相同,這里不再列舉。對(duì)應(yīng)converter3.jsp頁(yè)面的代碼如下:<%@pagelanguage="java"pageEncoding="UTF-8"%><%@tagliburi="/struts-tags"prefix="s"%><html><head> <title>對(duì)數(shù)組的類型轉(zhuǎn)換</title></head><body> <s:formaction="typeconverter3"method="post"> <s:textfieldname="tel"label="家庭電話"></s:textfield> <s:textfieldname="tel"label="公司電話"></s:textfield> <s:submitvalue="提交"></s:submit> </s:form></body></html>4.3.1數(shù)組類型轉(zhuǎn)換器3.編寫控制器Action編寫Action類“ArrayTypeConverterAction”的代碼如下:packageorg.action;importjava.util.List;importorg.vo.Tel;importcom.opensymphony.xwork2.ActionSupport;publicclassArrayTypeConverterActionextendsActionSupport{ privateTel[]tel; //數(shù)組類型傳值 publicTel[]getTel(){ returntel; } publicvoidsetTel(Tel[]tel){ this.tel=tel; }
publicStringexecute()throwsException{ returnSUCCESS; }}4.3.1數(shù)組類型轉(zhuǎn)換器在struts.xml文件中配置:<actionname="typeconverter3"class="org.action.ArrayTypeConverterAction"><resultname="success">/show3.jsp</result></action>4.3.1數(shù)組類型轉(zhuǎn)換器4.實(shí)現(xiàn)類型轉(zhuǎn)換器數(shù)組類型轉(zhuǎn)換器ArrayTypeConverter.java實(shí)現(xiàn)為。5.注冊(cè)類型轉(zhuǎn)換器用數(shù)組類型時(shí)需要配置局部類型轉(zhuǎn)換器,故該例配置文件應(yīng)為“ArrayTypeConverterAperties”,內(nèi)容為:tel=org.converter.ArrayTypeConverter位置應(yīng)與ArrayTypeConverterAction.java文件的位置相同。4.3.1數(shù)組類型轉(zhuǎn)換器6.編寫JSP由于是多個(gè)值傳遞,故顯示頁(yè)面show3.jsp用<s:iterator>標(biāo)簽輸出:<%@pagelanguage="java"pageEncoding="UTF-8"%><%@tagliburi="/struts-tags"prefix="s"%><html><head><title>對(duì)數(shù)組的類型轉(zhuǎn)換</title></head><body><s:propertyvalue="tel"/><br> <s:iteratorvalue="tel"id="t">
區(qū)號(hào):<s:propertyvalue="#t.sectionNo"/>
號(hào)碼:<s:propertyvalue="#t.telNo"/><br> </s:iterator></body></html>4.3.1數(shù)組類型轉(zhuǎn)換器運(yùn)行后,結(jié)果如圖4.6所示,已經(jīng)達(dá)到效果。4.3.2集合類型轉(zhuǎn)換器集合類型和數(shù)組類型差不多,也需要使用局部類型轉(zhuǎn)換器,可以在【實(shí)例4.3】基礎(chǔ)上稍做修改轉(zhuǎn)換為集合類型。首先Action類修改為:packageorg.action;importjava.util.List;importorg.vo.Tel;importcom.opensymphony.xwork2.ActionSupport;publicclassArrayTypeConverterActionextendsActionSupport{ privateList<Tel>tel;//應(yīng)用泛型 publicList<Tel>getTel(){ returntel; } publicvoidsetTel(List<Tel>tel){ this.tel=tel; } publicStringexecute()throwsException{ returnSUCCESS; }}然后是自定義的集合類型轉(zhuǎn)換器。最后把配置文件內(nèi)容修改為:tel=org.converter.ListTypeConverter4.4Struts2輸入校驗(yàn)Struts2應(yīng)用中的輸入校驗(yàn)大致有下面幾種方法。
在Action類中的處理方法進(jìn)行校驗(yàn),若沒有指定方法就用execute()方法。
繼承ActionSupport類,并重寫其validate()方法實(shí)現(xiàn)校驗(yàn)。
應(yīng)用Struts2的校驗(yàn)框架進(jìn)行校驗(yàn)。4.4Struts2輸入校驗(yàn)【實(shí)例4.4】開發(fā)一個(gè)簡(jiǎn)單的注冊(cè)功能項(xiàng)目,然后分別用不同的校驗(yàn)方法對(duì)用戶填寫的注冊(cè)信息進(jìn)行校驗(yàn)。創(chuàng)建Struts2項(xiàng)目,名為ValidateTest,然后加載Struts2包,配置web.xml文件,操作步驟同【實(shí)例2.1】的第1步、第2步,不再贅述。首先是注冊(cè)頁(yè)面index.jsp:<%@pagelanguage="java"pageEncoding="UTF-8"%><%@tagliburi="/struts-tags"prefix="s"%><html> <head> <title>注冊(cè)頁(yè)面</title> </head> <body> <s:formaction="regist"method="post"> <s:textfieldname="username"label="姓名"></s:textfield> <s:passwordname="password"label="密碼"></s:password> <s:passwordname="repassword"label="確認(rèn)密碼"></s:password> <s:textfieldname="age"label="年齡"></s:textfield> <s:submitvalue="提交"></s:submit> </s:form> </body></html>4.4Struts2輸入校驗(yàn)Action類文件RegistAction.java為:packageorg.action;importcom.opensymphony.xwork2.ActionSupport;publicclassRegistActionextendsActionSupport{ privateStringusername; //姓名 privateStringpassword; //密碼 privateStringrepassword; //確認(rèn)密碼 privateintage; //年齡 //上述屬性的set和get方法 publicStringexecute()throwsException{ returnSUCCESS; }}在struts.xml文件中配置為:<actionname="regist"class="org.action.RegistAction"><resultname="success">/success.jsp</result></action>4.4Struts2輸入校驗(yàn)注冊(cè)成功頁(yè)面success.jsp為:<%@pagelanguage="java"pageEncoding="UTF-8"%><%@tagliburi="/struts-tags"prefix="s"%><html> <head> <title>成功頁(yè)面</title> </head> <body>
恭喜您<s:propertyvalue="username"/>!您已經(jīng)注冊(cè)成功 </body></html>4.4.1使用execute()方法校驗(yàn)這是最簡(jiǎn)單的辦法,只要在RegistAction類的execute()方法中添加校驗(yàn)代碼即可,如下:…publicclassRegistActionextendsActionSupport{ … publicStringexecute()throwsException{ if(username.equals("")||username==null){ addFieldError("username","username為空"); }elseif(password.equals("")||password==null){ addFieldError("password","password為空"); }elseif(repassword.equals("")||repassword==null){ addFieldError("repassword","repassword為空"); }elseif(!password.equals(repassword)){ addFieldError("password","兩次輸入密碼不同"); }elseif(age<1||age>150){ addFieldError("age","age必須在1到150之間"); } if(hasErrors()){ returnINPUT; } returnSUCCESS; }}4.4.1使用execute()方法校驗(yàn)相應(yīng)地在struts.xml中也要加入驗(yàn)證失敗后的跳轉(zhuǎn)頁(yè)面:<resultname="input">/index.jsp</result>運(yùn)行后,輸入界面如圖4.7所示,不輸入任何值直接單擊【提交】按鈕,會(huì)出現(xiàn)如圖4.8所示的界面。
4.4.2重寫validate()方法校驗(yàn)自定義Action類在繼承了ActionSupport后可以重寫其validate()方法來(lái)實(shí)現(xiàn)輸入校驗(yàn),當(dāng)在Action類中定義了該方法后,該方法會(huì)在執(zhí)行系統(tǒng)的execute()方法之前執(zhí)行。如果執(zhí)行該方法之后,Action類的fieldErrors中已經(jīng)包含了數(shù)據(jù)校驗(yàn)錯(cuò)誤信息,將把請(qǐng)求轉(zhuǎn)發(fā)到input邏輯視圖處。修改RegistAction.java類為:…publicclassRegistActionextendsActionSupport{ … publicStringexecute()throwsException{ returnSUCCESS; } publicvoidvalidate(){ if(username.equals("")||username==null){ addFieldError("username","username為空"); }elseif(password.equals("")||password==null){ addFieldError("password","password為空"); }elseif(repassword.equals("")||repassword==null){ addFieldError("repassword","repassword為空"); }elseif(!password.equals(repassword)){ addFieldError("password","兩次輸入密碼不同"); }elseif(age<1||age>150){ addFieldError("age","age必須在1到150之間"); } }}4.4.3使用Struts2校驗(yàn)框架1.使用<validate></validate>標(biāo)簽使用該標(biāo)簽可以聲明字段型或非字段型兩種類型校驗(yàn)器。字段型校驗(yàn)器配置格式如下:<validatortype="校驗(yàn)器名稱"> <paramname="fieldName">待校驗(yàn)字段名</param> <message>校驗(yàn)失敗信息</message></validator>非字段型校驗(yàn)器格式如下:<validatortype="校驗(yàn)器名稱"> <paramname="expression">OGNL表達(dá)式取值</param> <message>校驗(yàn)失敗信息</message></validator>4.4.3使用Struts2校驗(yàn)框架例如,對(duì)username字段進(jìn)行非空校驗(yàn),應(yīng)配置為:<validatortype="required"> <paramname="fieldName">username</param> <message>username為空!</message></validator>...//若要聲明其他校驗(yàn)器,可以在下面繼續(xù)配置<validate>標(biāo)簽來(lái)完成4.4.3使用Struts2校驗(yàn)框架2.使用<field></fie
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 親子讀書心得體會(huì)15篇
- 中學(xué)生物教研組工作總結(jié)
- 中隊(duì)委競(jìng)選演講稿模板集錦9篇
- 中國(guó)醫(yī)師節(jié)致辭范文(6篇)
- 中醫(yī)院經(jīng)濟(jì)管理經(jīng)驗(yàn)匯報(bào)材料-學(xué)習(xí)材料范文
- 應(yīng)急值守課件教學(xué)課件
- 影像科緊急搶救預(yù)案及流程(修)
- 影響-“小組合作學(xué)習(xí)”實(shí)效性的因素及對(duì)策
- 機(jī)動(dòng)車安全技術(shù)檢測(cè)儀器設(shè)備計(jì)算機(jī)控制與通信技術(shù)條件 編制說明
- wipo-文本和圖像作品的集體管理
- 信息網(wǎng)絡(luò)傳播權(quán)的侵權(quán)認(rèn)定及其保護(hù)
- 專題03正比例函數(shù)和反比例函數(shù)(原卷版+解析)
- DL-T956-2017火力發(fā)電廠停(備)用熱力設(shè)備防銹蝕導(dǎo)則
- 危險(xiǎn)貨物道路運(yùn)輸規(guī)則第5部分:托運(yùn)要求(JTT617.5-2018)
- DZ/T 0462.1-2023 礦產(chǎn)資源“三率”指標(biāo)要求 第1部分:煤(正式版)
- 全面推進(jìn)依法治國(guó)的總目標(biāo)和原則教學(xué)設(shè)計(jì)
- 嘔血窒息的護(hù)理查房
- 《紙質(zhì)文物修復(fù)與保護(hù)》課件-30古籍的版式
- 工程防滲漏培訓(xùn)課件
- 鋼結(jié)構(gòu)廠房拆除施工方案案例
- 《中國(guó)藥典》四部通則片劑和膠囊劑培訓(xùn)
評(píng)論
0/150
提交評(píng)論