最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Struts中使用validate()輸入校驗(yàn)方法詳解

 更新時(shí)間:2016年09月02日 14:31:18   投稿:mrr  
這篇文章主要介紹了Struts中使用validate()輸入校驗(yàn)方法,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧

1、在ActionSupport中有一個(gè)validate()方法,這個(gè)方法是驗(yàn)證方法,它會(huì)在execute()方法執(zhí)行之前執(zhí)行,所以能夠起到很好的驗(yàn)證的作用。

@Override //重寫Action中的validate()方法
public void validate() {
if(null==this.username||this.username.length()<4||this.username.length()>6){
this.addActionError("username invadate");
}
}

a、如果驗(yàn)證沒有通過,我們可以調(diào)用addActionError("Error Message");這樣,這個(gè)錯(cuò)誤信息就被保存了。
validate整個(gè)方法都執(zhí)行完成之后,系統(tǒng)就會(huì)自動(dòng)去檢查name="input"所對(duì)應(yīng)的jsp頁面,一般建議跳到我們注冊(cè)的頁面,即哪里來,回哪里去

/registerResult.jsp
/register.jsp

b、然后我們?cè)趓egister.jsp

即最初的注冊(cè)頁面添加上這個(gè)struts2標(biāo)簽

<s:actionerror cssStyle="color:red"/>

表示的意思是:如果存在錯(cuò)誤信息,即actionerror存在,則輸出這個(gè)錯(cuò)誤信息,

而且,我們可以對(duì)標(biāo)簽進(jìn)行css的設(shè)置

//注意,使用struts2標(biāo)簽必須在頭文件中引入標(biāo)簽:
<%@ 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級(jí)別與Field級(jí)別。通過這種方式,讓我們可以在添加錯(cuò)誤的時(shí)候可以往不同的級(jí)別添加,提示錯(cuò)誤信息的時(shí)候可以更靈活,而不會(huì)把所有的信息都添加到Action級(jí)別以后,所有的信息都同一顯示出來。比如說:我們要把重復(fù)密碼錯(cuò)誤這個(gè)錯(cuò)誤信息用紅色的字體表示,而其他信息,比如說用戶名、年齡等信息用綠色的字體來表示,這個(gè)時(shí)候通過使用往不同的級(jí)別添加就可以了。

在注冊(cè)頁面,也只要寫一句Field級(jí)別的標(biāo)簽就可以了。如下:

<s:actionerror cssStyle="color:red"/>//action級(jí)別
<s:fielderror cssStyle="color:blue"></s:fielderror>//field級(jí)別
public void validate() {
if(null==this.username||this.username.length()<4||this.username.length()>6){
this.addActionError("username invadate");//往Action級(jí)別添加錯(cuò)誤信息
this.addFieldError("username", "username invadate in field");//往field級(jí)別處添加錯(cuò)誤信息
}
}

3、發(fā)送錯(cuò)誤后,將原來的信息還顯示在表單里面。

<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標(biāo)簽,能夠自動(dòng)排版,然后能夠?qū)㈠e(cuò)誤的Field級(jí)別的信息顯示出來,如下所示。

4、不過這種自動(dòng)使用table來排版的方式雖然方便,但是很多情況下不符合我們的需求,所以我們可以使用自定義的排版方式。

方法二:定義排版方式為simple,這樣子我們就可以按照html的方式來自己排版了 。

field級(jí)別的錯(cuò)誤也不會(huì)被自動(dòng)顯示出來。

<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的時(shí)候,是按照post方式提交的,這樣子比較安全

6、如果輸入的值不符合法,比如說age是int類型的,輸入的為String類型,這個(gè)時(shí)候系統(tǒng)會(huì)判斷并往Field級(jí)別添加Invalid field value for field”age" 這個(gè)信息如下:

執(zhí)行流程:

1)首先進(jìn)行類型轉(zhuǎn)換

2)然后進(jìn)行輸入效驗(yàn)(執(zhí)行validate方法)

3)如果在上述過程中出現(xiàn)了任何錯(cuò)誤,都不會(huì)再去執(zhí)行execute方法,頁面會(huì)轉(zhuǎn)向struts.xml中該action的name為input的result所對(duì)應(yīng)的頁面。

8.ActionSupport類的addActionError()方法的實(shí)現(xiàn):首先創(chuàng)建一個(gè)ArrayList對(duì)象,然后將錯(cuò)誤消息添加到該ArrayList對(duì)象中。

9、當(dāng)調(diào)用getActionErrors()方法返回Action級(jí)別的錯(cuò)誤信息列表時(shí),返回的實(shí)際上是集合的一個(gè)副本而不是集合本身,因此對(duì)集合副本調(diào)用clear()方法清除的依舊是副本中的元素而非原集合中的元素,此時(shí)原集合中的內(nèi)容沒有收到任何的影響。換句話說,Action級(jí)別的錯(cuò)誤信息列表對(duì)開發(fā)者來說是可讀的,但不可寫

如果說要在validate后將錯(cuò)誤信息刪除掉,讓其即使有錯(cuò)誤信息也照樣去執(zhí)行execute方法,則可以調(diào)用this.clearAllActionErrors()或者this.clearAllFieldErrors()方法

10、FieldError級(jí)別的錯(cuò)誤信息底層是通過LinkedHashMap實(shí)現(xiàn)的,該Map的key是String類型,value是List<String>類型,這就表示一個(gè)Field Name可以對(duì)應(yīng)多條錯(cuò)誤信息,這些錯(cuò)誤信息都放置在List<String>集合當(dāng)中。 從而達(dá)到同一個(gè)錯(cuò)誤有多個(gè)錯(cuò)誤信息

以上所述是小編給大家介紹的Struts中使用validate()輸入校驗(yàn)方法詳解,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • SpringCloud Eureka Provider及Consumer的實(shí)現(xiàn)

    SpringCloud Eureka Provider及Consumer的實(shí)現(xiàn)

    這篇文章主要介紹了SpringCloud Eureka 提供者及調(diào)用者的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java加載ICC文件的方法和示例代碼

    Java加載ICC文件的方法和示例代碼

    ICC文件,通常用于顏色管理,定義了如何將一個(gè)顏色空間轉(zhuǎn)換為另一個(gè)顏色空間,在Java中,我們可能需要加載這些文件來進(jìn)行顏色轉(zhuǎn)換或管理,本文將為您提供加載ICC文件的方法和示例代碼,需要的朋友參考下吧
    2023-08-08
  • Java編程中的vector類用法學(xué)習(xí)筆記

    Java編程中的vector類用法學(xué)習(xí)筆記

    Vector通常被用來實(shí)現(xiàn)動(dòng)態(tài)數(shù)組,即可實(shí)現(xiàn)自動(dòng)增長的對(duì)象數(shù)組,和C++一樣vector類同樣被Java內(nèi)置,下面就來看一下vector類的基本用法.
    2016-05-05
  • Stream中的Peek操作代碼

    Stream中的Peek操作代碼

    這篇文章主要介紹了Stream中的Peek操作,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • @Autowired與@Resource在實(shí)現(xiàn)對(duì)象注入時(shí)的區(qū)別

    @Autowired與@Resource在實(shí)現(xiàn)對(duì)象注入時(shí)的區(qū)別

    這篇文章主要介紹了@Autowired與@Resource在實(shí)現(xiàn)對(duì)象注入時(shí)的區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-04-04
  • springMVC?@RestControllerAdvice注解使用方式

    springMVC?@RestControllerAdvice注解使用方式

    這篇文章主要介紹了springMVC?@RestControllerAdvice注解使用方式,下面通過一個(gè)簡單的示例,演示如何使用?@RestControllerAdvice,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • Spring RestTemplate基本使用介紹

    Spring RestTemplate基本使用介紹

    這篇文章主要介紹了Spring RestTemplate基本使用介紹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Java多種獲取項(xiàng)目路徑下的文件方式

    Java多種獲取項(xiàng)目路徑下的文件方式

    文章介紹了在Java項(xiàng)目中獲取resources文件夾下文件的InputStream的多種方法,包括使用類加載器、上下文類加載器、系統(tǒng)屬性和Paths類
    2024-12-12
  • 詳細(xì)說明關(guān)于Java的數(shù)據(jù)庫連接(JDBC)

    詳細(xì)說明關(guān)于Java的數(shù)據(jù)庫連接(JDBC)

    這篇文章主要介紹了詳細(xì)說明關(guān)于Java的數(shù)據(jù)庫連接JDBC,JDBC是用Java語言向數(shù)據(jù)庫發(fā)送SQL語句,需要的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • Java中null相關(guān)注解的實(shí)現(xiàn)

    Java中null相關(guān)注解的實(shí)現(xiàn)

    本文主要介紹了Java中null相關(guān)注解的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論

汉源县| 宿迁市| 新蔡县| 宝丰县| 常德市| 宁都县| 安阳县| 苏尼特左旗| 于田县| 安泽县| 栾城县| 独山县| 合川市| 宽城| 子洲县| 嘉荫县| 双江| 安国市| 曲阜市| 繁峙县| 安丘市| 荃湾区| 横山县| 南和县| 南通市| 隆子县| 霍林郭勒市| 石屏县| 锡林浩特市| 阜康市| 平阴县| 堆龙德庆县| 抚顺市| 大宁县| 涿鹿县| 肥东县| 原阳县| 辰溪县| 永城市| 安远县| 曲沃县|