程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Struts中應用validate()輸出校驗辦法詳解

Struts中應用validate()輸出校驗辦法詳解

編輯:關於JAVA

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()輸出校驗辦法詳解,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved