Struts中應用validate()輸出校驗辦法詳解。本站提示廣大學習愛好者:(Struts中應用validate()輸出校驗辦法詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是Struts中應用validate()輸出校驗辦法詳解正文
1、在ActionSupport中有一個validate()辦法,這個辦法是驗證辦法,它會在execute()辦法履行之前履行,所以可以或許起到很好的驗證的感化。
@Override //重寫Action中的validate()辦法 public void validate() { if(null==this.username||this.username.length()<4||this.username.length()>6){ this.addActionError("username invadate"); } }
a、假如驗證沒有經由過程,我們可以挪用addActionError("Error Message");如許,這個毛病信息就被保留了。
validate全部辦法都履行完成以後,體系就會主動去檢討name="input"所對應的jsp頁面,普通建議跳到我們注冊的頁面,即哪裡來,回哪裡去
/registerResult.jsp /register.jsp
b、然後我們在register.jsp
即最後的注冊頁面添加上這個struts2標簽
<s:actionerror css/>
表現的意思是:假如存在毛病信息,即actionerror存在,則輸入這個毛病信息,
並且,我們可以對標簽停止css的設置
//留意,應用struts2標簽必需在頭文件中引入標簽: <%@ taglib prefix="s" uri="/struts-tags" %>
c、
一種比擬日期的辦法:
brithday與graduate為Date類型
if(null != birthday && null != graduation) { Calendar c1 = Calendar.getInstance(); c1.setTime(birthday); Calendar c2 = Calendar.getInstance(); c2.setTime(graduation); if(!c1.before(c2)) { this.addActionError("birthday should be before graduation"); } }
2、Action級別與Field級別。經由過程這類方法,讓我們可以在添加毛病的時刻可以往分歧的級別添加,提醒毛病信息的時刻可以更靈巧,而不會把一切的信息都添加到Action級別今後,一切的信息都統一顯示出來。好比說:我們要把反復暗碼毛病這個毛病信息用白色的字體表現,而其他信息,好比說用戶名、年紀等信息用綠色的字體來表現,這個時刻經由過程應用往分歧的級別添加便可以了。
在注冊頁面,也只需寫一句Field級其余標簽便可以了。以下:
<s:actionerror css/>//action級別 <s:fielderror css></s:fielderror>//field級別 public void validate() { if(null==this.username||this.username.length()<4||this.username.length()>6){ this.addActionError("username invadate");//往Action級別添加毛病信息 this.addFieldError("username", "username invadate in field");//往field級別處添加毛病信息 } }
3、發送毛病後,將本來的信息還顯示在表單外面。
<s:form action="RegisterAction"> <s:textfield name="username" label="username"></s:textfield> <s:password name="password" label="password"></s:password> <s:password name="repassword" label="repassword"></s:password> <s:textfield name="age" label="age"></s:textfield> <s:textfield name="birthday" label="brithday"></s:textfield> <s:textfield name="graduate" label="graduate"></s:textfield> <s:submit value="submit"></s:submit> </s:form>
應用struts2標簽,可以或許主動排版,然後可以或許將毛病的Field級其余信息顯示出來,以下所示。
4、不外這類主動應用table來排版的方法固然便利,然則許多情形下不相符我們的需求,所以我們可使用自界說的排版方法。
辦法二:界說排版方法為simple,如許子我們便可以依照html的方法來本身排版了 。
field級其余毛病也不會被主動顯示出來。
<s:form action="RegisterAction" theme="simple"><br/> username:<s:textfield name="username" label="username"></s:textfield><br/> password:<s:password name="password" label="password"></s:password><br/> repassword:<s:password name="repassword" label="repassword"></s:password><br/> age:<s:textfield name="age" label="age"></s:textfield><br/> birthday:<s:textfield name="birthday" label="brithday"></s:textfield><br/> graduate:<s:textfield name="graduate" label="graduate"></s:textfield><br/> <s:submit value="submit"></s:submit> </s:form>
5、為了平安性,struts在沒有界說method的時刻,是依照post方法提交的,如許子比擬平安
6、假如輸出的值不相符法,好比說age是int類型的,輸出的為String類型,這個時刻體系會斷定並往Field級別添加Invalid field value for field”age" 這個信息以下:
履行流程:
1)起首停止類型轉換
2)然落後行輸出效驗(履行validate辦法)
3)假如在上述進程中湧現了任何毛病,都不會再去履行execute辦法,頁面會轉向struts.xml中該action的name為input的result所對應的頁面。
8.ActionSupport類的addActionError()辦法的完成:起首創立一個ArrayList對象,然後將毛病新聞添加到該ArrayList對象中。
9、當挪用getActionErrors()辦法前往Action級其余毛病信息列表時,前往的現實上是聚集的一個正本而不是聚集自己,是以對聚集正本挪用clear()辦法消除的照舊是正本中的元素而非原聚集中的元素,此時原聚集中的內容沒有收就任何的影響。換句話說,Action級其余毛病信息列表對開辟者來講是可讀的,但弗成寫
假如說要在validate後將毛病信息刪除失落,讓其即便有毛病信息也照樣去履行execute辦法,則可以挪用this.clearAllActionErrors()或許this.clearAllFieldErrors()辦法
10、FieldError級其余毛病信息底層是經由過程LinkedHashMap完成的,該Map的key是String類型,value是List<String>類型,這就表現一個Field Name可以對應多條毛病信息,這些毛病信息都放置在List<String>聚集傍邊。 從而到達統一個毛病有多個毛病信息
以上所述是小編給年夜家引見的Struts中應用validate()輸出校驗辦法詳解,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!