Struts2校驗(yàn)框架

1四敞、以前是在動(dòng)作類的excute業(yè)務(wù)方法里寫(xiě)校驗(yàn)代碼,這樣是不好的拔妥,校驗(yàn)代碼和業(yè)務(wù)邏輯代碼混合忿危,可讀性差,而且增加維護(hù)難度没龙。
2癌蚁、我們現(xiàn)在使用validate或validateXxx方法校驗(yàn)。就是在動(dòng)作類里重寫(xiě)ActionSupport類的validate()或放到自定義的validateXxx(),但是這樣當(dāng)字段較多的時(shí)候兜畸,也會(huì)很臃腫努释。
3、所以最好的辦法就是定義一個(gè)動(dòng)作類名-validation.xml或動(dòng)作類名-動(dòng)作名-validation.xml,并且保存在動(dòng)作類同一目錄下的xml校驗(yàn)配置文件咬摇。如動(dòng)作類名為BAction伐蒂,則該xml為BAction-validation.xml.
然后必須在xml校驗(yàn)配置文件中對(duì)每個(gè)校驗(yàn)字段配置校驗(yàn)器。

image.png

校驗(yàn)器的配置方法有兩種

字段型校驗(yàn)方式


image.png

非字段型方式

image.png

一般用第一種肛鹏,其中的key是引用國(guó)際化逸邦。

image.png

例子:

image.png

User.java

public class User {
    private String name;
    private String password1;
    private String password2;
    private int age;
    private Date birthday;
    private String email;
        //get和set方法省略
}

注冊(cè)動(dòng)作類,注意一般要把pojo和動(dòng)作類分開(kāi)寫(xiě)在扰,
不要?jiǎng)幼黝惱镞€寫(xiě)上面那些字段缕减。但是表單提交是提交到動(dòng)作類的,也就是說(shuō)動(dòng)作類必須得有相同和字段取獲取表單提交的值芒珠。這時(shí)候我們用到ModelDriver桥狡,可以看看這個(gè)http://blog.csdn.net/li_tengfei/article/details/6098145
···
package com.ljs.struts.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class RegisterAction extends ActionSupport implements ModelDriven {
private User user = new User();
public Object getModel() {
// TODO Auto-generated method stub
return user;
}
public String register() throws Exception {
return SUCCESS;
}
}

register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<link rel="stylesheet" type="text/css" href="<s:url value="/styles/styles.css"/>">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
    <s:form action="Register" namespace="/user">
        <s:textfield name="name" label="用戶名"/>
        <s:password name="password1" label="密碼"/>
        <s:password name="password2" label="確認(rèn)密碼"/>
        <s:textfield name="age" label="年齡"/>
        <s:textfield name="birthday" label="生日"/>
        <s:textfield name="email" label="email"/>
        <s:submit value="提交" cssStyle="float:right"/>
    </s:form>
  </body>
</html>

style.css
設(shè)置label為斜體,出錯(cuò)就為紅色和斜體,錯(cuò)誤信息紅色和加粗

.label {font-style:italic; }

.errorLabel {font-style:italic; color:red; }

.errorMessage {font-weight:bold; color:red; }

RegisterAction-Register.xml
記住Register的R要大寫(xiě)裹芝,雖然方法是小寫(xiě)部逮,但是這里要大寫(xiě),沒(méi)有會(huì)出錯(cuò)嫂易。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE validators PUBLIC 
  "-//Apache Struts//XWork Validator 1.0.2//EN"
  "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
    <field name="name">
        <field-validator type="requiredstring">
            <message key="errors.name.requiredstring"/>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minlength">2</param>
            <param name="maxlength">6</param>
            <message key="errors.namelength"/>
        </field-validator>
    </field>
    <field name="password1">
        <field-validator type="requiredstring">
            <message key="errors.password1.requiredstring"/>
        </field-validator>
        <field-validator type="regex">
            <param name="regexExpression">
            <![CDATA[(\w{4,15})]]>
            </param>
            <message key="errors.password"/>
        </field-validator>
    </field>
    <field name="password2">
        <field-validator type="fieldexpression">
            <param name="expression">
            <![CDATA[password1==password2]]>
            </param>
            <message key="errors.passwordequals"/>
        </field-validator>
    </field>
    <field name="age">
        <field-validator type="int">
            <param name="min">1</param>
            <param name="max">150</param>
            <message key="errors.age"/>
        </field-validator>
    </field>
    <field name="birthday">
        <field-validator type="required">
            <message key="birthday.error.message"/>
        </field-validator>
        <field-validator type="date">
            <param name="min">1990-01-01</param>
            <param name="max">2017-01-01</param>
            <message key="birthday.error.message"/>
        </field-validator>
    </field>
    <field name="email">
        <field-validator type="email">
            <message key="errors.email"/>
        </field-validator>
    </field>
</validators>

RegisterAction.properties

a.png

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<!-- Struts2配置文件的根元素 -->
<struts>
    <package name="lab07" extends="struts-default"  namespace="/user">
        <action name="Register" class="com.ljs.struts.action.RegisterAction" method="register">
            <result name="input">/register.jsp</result>
            <result name="success">/success.jsp</result>
        </action> 
    </package>
</struts>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兄朋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子怜械,更是在濱河造成了極大的恐慌颅和,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缕允,死亡現(xiàn)場(chǎng)離奇詭異峡扩,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)灼芭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)有额,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)般又,“玉大人彼绷,你說(shuō)我怎么就攤上這事≤钋ǎ” “怎么了寄悯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)堕义。 經(jīng)常有香客問(wèn)我输吏,道長(zhǎng)不皆,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮鄙麦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘庶溶。我一直安慰自己宅此,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布褐捻。 她就那樣靜靜地躺著掸茅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪柠逞。 梳的紋絲不亂的頭發(fā)上昧狮,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音板壮,去河邊找鬼逗鸣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的慕购。 我是一名探鬼主播聊疲,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼沪悲!你這毒婦竟也來(lái)了获洲?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤殿如,失蹤者是張志新(化名)和其女友劉穎贡珊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體涉馁,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡门岔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烤送。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寒随。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖帮坚,靈堂內(nèi)的尸體忽然破棺而出妻往,到底是詐尸還是另有隱情,我是刑警寧澤试和,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布讯泣,位于F島的核電站,受9級(jí)特大地震影響阅悍,放射性物質(zhì)發(fā)生泄漏好渠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一节视、第九天 我趴在偏房一處隱蔽的房頂上張望拳锚。 院中可真熱鬧,春花似錦寻行、人聲如沸霍掺。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抗楔。三九已至,卻和暖如春拦坠,著一層夾襖步出監(jiān)牢的瞬間连躏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工贞滨, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留入热,地道東北人拍棕。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像勺良,于是被迫代替她去往敵國(guó)和親绰播。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.required:必填校驗(yàn)器 fieldname:字段名尚困,如果使用簡(jiǎn)單驗(yàn)證器語(yǔ)法蠢箩,則字段名稱,如果使用字段驗(yàn)證...
    若情若水閱讀 548評(píng)論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法事甜,類相關(guān)的語(yǔ)法谬泌,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法逻谦,異常的語(yǔ)法掌实,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,644評(píng)論 18 399
  • 目錄 1. Struts2提供了三種數(shù)據(jù)封裝的方式 2. 封裝數(shù)據(jù)到Collection和Map 3. Strut...
    深海魚(yú)Q閱讀 961評(píng)論 3 10
  • 概述 什么是Struts2的框架Struts2是Struts1的下一代產(chǎn)品,是在 struts1和WebWork的...
    inke閱讀 2,258評(píng)論 0 50
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,811評(píng)論 0 11