生活随笔
收集整理的這篇文章主要介紹了
Struts2-表单验证的两种方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. Struts2中的輸入校驗
2. 編碼方式校驗
? 1) Action一定要繼承自ActionSupport
? 2) 針對某個要進行校驗的請求處理方法編寫一個 public void validateXxx()方法,在方法內部進行表單數據校驗.
? 3) 也可針對所有的請求處理方法編寫public void validate()方法。
? 4) 在校驗方法中,可以通過addFieldError()方法來添加字段校驗錯誤消息。
? 5) 當校驗失敗時,Struts框架會自動跳轉到name為input的Result頁面。在校驗失敗頁面中,可以使用<s:fielderror/>來顯示錯誤消息
? 6) 簡單,靈活。但重用性不高。
??
3. XML配置方式校驗。在編碼方式之前被執行。
? 1) 針對要校驗的Action類,在同包下編寫一個名為:Action類名-validation.xml校驗規則文件。
? 2) 在校驗規則文件中添加校驗規則:具體的校驗器名,參數可參看Struts2的reference或Struts2的API。
???? a) Field校驗:針對Action類中每個非自定義類型的Field進行校驗的規則。
??? <field name="要校驗的Field名">
???? <field-validator type="校驗規則器名" short-circuit="是否要短路徑校驗(默認是false)">
???????? <param name="校驗器要使用的參數名">值</param>
??????????? <message>校驗失敗時的提示消息</message>
??</field-validator>
??<!-- 還可添加其它的校驗規則 -->
?</field>
?
???? b) 非Field校驗:針對Action類的某些Field使用OGNL表達進行組合校驗。
??? <validator type="fieldexpression">
??<param name="fieldName">pwd</param>
??? ?<param name="fieldName">pwd2</param>
??? ?<param name="expression"><![CDATA[pwd==pwd2]]></param><!-- OGNL表達式 -->
??? ?<message>確認密碼和密碼輸入不一致</message>
?</validator>
?
???? c) visitor校驗:主要是用來校驗Action類中的自定義類型Field。(針對使用模型驅動方式時)
?????? i) 在Action類的的校驗規則文件中針對自定義類型Field使用visitor校驗規則。
??? <!-- 針對自定義Field使用visitor校驗 -->
?<field name="user">
??<field-validator type="required" short-circuit="true">
??????????? <message>用戶的信息必填</message><!-- 消息前綴 -->
??</field-validator>
??<field-validator type="visitor"><!-- 指定為visitor校驗規則 -->
???<param name="context">userContext</param><!-- 指定本visitor校驗的上下文名 -->
??????????? <param name="appendPrefix">true</param><!-- 是否要添加校驗失敗消息的前綴 -->
??????????? <message>用戶的</message><!-- 消息前綴 -->
??</field-validator>
?</field>
??? ii) 針對visitor的Field編寫一個校驗規則文件.文件名為: visitor字段類型名[-visitor校驗的上下文名]-validation.xml. 例如: 本例中的文件名為User-userContext-validation.xml
????????????????? 注意: 此文件要存放到visitor字段類型所在的包下.
??? iii) 在visitor的Field校驗規則文件中針對要校驗的Field添加校驗規則.
?? 3) 在校驗失敗頁面(名為input的result頁面)中,可以使用<s:fielderror/>來顯示錯誤消息。
?? 4) 默認情況下,XML的校驗規則對Action中所有的請求處理方法生效.此時應該只針對每個要校驗的請求處理方法指定校驗。有兩種方式:
????? i) 只為Action中的指定方法指定校驗規則文件,配置文件命名為:Action類型名-別名-validation.xml,
????????????????????? 別名是要校驗的方法對應的Action標簽的name屬性值。
????????????????????? 如:UserAction在struts2.xml的配置為:
??? <package name="my" extends="struts-default" namespace="/">
??<action name="user_*" class="com.javacrazyer.web.action.UserAction" method="{1}">
???<result name="success">/info.jsp</result>
???<result name="input">/user_{1}.jsp</result>
??</action>
??? </package>??????????????
??????????????? ● UserAction中有registe方法和login方法,要對registe方法進行校驗,則它的校驗規則文件名為:UserAction-user_registe-validation.xml。
???????????????? ● 如果使用visitor校驗器,必需指定visitor校驗的上下文名。
????? ii) 在校驗攔截器中指定要驗證的方法。不太實用。
?? <action name="user_*" class="com.javacrazyer.web.action.UserAction" method="{1}">
??? <result name="success">/info.jsp</result>
??? <result name="input">/user_{1}.jsp</result>
???? <interceptor-ref name="defaultStack">
??????? <!-- 給校驗攔截器指定不進行校驗的方法列表:用逗號隔開 -->
??????? <param name="validation.excludeMethods">*</param>
??????? <!-- 給校驗攔截器指定要進行校驗的方法列表:用逗號隔開 -->
??????? <param name="validation.includeMethods">regist</param>
????? </interceptor-ref>
?? </action>
?? 5) 同時使用客戶端校驗和服務器端校驗
????? i) 設置<s:form>標簽的validate屬性:
???????? false:默認值。校驗框架只執行服務器端校驗。
???????? true:先執行客戶端校驗,然后再執行服務器端校驗。
???????? form標簽會根據你在服務器端配置的驗證規則生成對應的JavaScript驗證代碼。
????????????????????? 目前支持的內置校驗器:required、requiredstring、stringlength、regex validator、email、url、int、double
????? ii) 不太好用,不建議使用。建議使用jQuery進行頁面表單校驗。
?? 6) 自定義校驗器:
????? i) 繼承自FieldValidatorSupport抽象類。重寫validate(Object obj)方法
????? ii) 注冊校驗器類. 在應用程序的classpath下新建一校驗器注冊文件。名為validators.xml,內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
??????? "-//OpenSymphony Group//XWork Validator Config 1.0//EN"
??????? "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">
<validators>
? <validator name="校驗器名" class="校驗器類的全限定名"/>?
</validators>
?
4. Annotation方式校驗: Struts2提供了注解的方式校驗
? 1) @Validation 指明這個類或者接口將使用基于注解的校驗。Struts2.1中已被標識為過時。
? 2) @Validations() 在同一個方法上要使用多個注解校驗時。
? 3) @SkipValidation 指定某個方法不需要校驗。否則所有方法都會使用校驗。也可以在檢驗攔截器中使用validateAnnotatedMethodOnly
? 4) 13個內置校驗器的注解版本:(注:這些注解都只能用在方法級別上) 具體參數參見Struts2的API或Reference。
@RequiredFieldValidator
@RequiredStringValidator
@StringLengthFieldValidator
@IntRangeFieldValidator
@DoubleRangeFieldValidator
@DateRangeFieldValidator
@ExpressionValidator
@FieldExpressionValidator
@RegexFieldValidator
@EmailValidator
@UrlValidator
@VisitorFieldValidator
@ConversionErrorFieldValidator
?
acc_registe.jsp
[html] view plaincopy
<span?style="font-size:?medium;"><%@?page?language="java"?import="java.util.*"?pageEncoding="utf-8"%>??<%@?taglib?uri="/struts-tags"?prefix="s"?%>??<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">??<html>????<head>??????<title>Struts2中基于XML配置式的校驗器使用示例</title>????</head>????<body>??<h3>XML配置式校驗器---注冊頁面</h3><hr/>????<div?style="color:red"><s:fielderror/></div>??<form?action="acc_registe.action"?method="post">??????<table>??????????<tr>??????????????<td>ID</td>??????????????<td><input?type="text"?name="id"?value="${param.id}"/></td>??????????</tr>??????????<tr>??????????????<td>登錄名</td>??????????????<td><input?type="text"?name="name"?value="${param.name}"/></td>??????????</tr>??????????<tr>??????????????<td>密碼</td>??????????????<td><input?type="password"?name="pwd"/></td>??????????</tr>??????????<tr>??????????????<td>重復密碼</td>??????????????<td><input?type="password"?name="pwd2"/></td>??????????</tr>??????????<tr>??????????????<td>時間</td>??????????????<td><input?type="text"?name="registed_date"?value="${param.registed_date}"/></td>??????????</tr>??????????<tr>??????????????<td>email</td>??????????????<td><input?type="text"?name="email"?value="${param.email}"/></td>??????????</tr>??????????<tr>??????????????<td>考試成績</td>??????????????<td><input?type="text"?name="score"?value="${param.score}"/></td>??????????</tr>??????????<tr>??????????????<td?colspan="2"><input?type="submit"?value="?提交?"/></td>??????????</tr>??????</table>??</form>????</body>??</html></span>??
?src/struts.xml
[html] view plaincopy
<span?style="font-size:?medium;"><?xml?version="1.0"?encoding="UTF-8"??>??<!DOCTYPE?struts?PUBLIC??????"-//Apache?Software?Foundation//DTD?Struts?Configuration?2.1.7//EN"??????"http://struts.apache.org/dtds/struts-2.1.7.dtd">????<struts>????????????<constant?name="struts.i18n.encoding"?value="UTF-8"/>????????????<constant?name="struts.action.extension"?value="action,do,go,xkk"/>????????????<constant?name="struts.configuration.xml.reload"?value="true"/>????????????<constant?name="struts.devMode"?value="false"/>????????????<constant?name="struts.serve.static.browserCache"?value="false"?/>????????????<constant?name="struts.ognl.allowStaticMethodAccess"?value="true"/>????????????<!--?指定由spring負責action對象的創建???????<constant?name="struts.objectFactory"?value="spring"?/>??????-->????????????<constant?name="struts.enable.DynamicMethodInvocation"?value="false"/>????????????<package?name="my"?extends="struts-default"?namespace="/">??????????<action?name="acc_*"?class="com.javacrazyer.web.action.AccountAction"?method="{1}">??????????????<result?name="success">/info.jsp</result>??????????????<result?name="input">/acc_{1}.jsp</result>??????????</action>????????????????</package>????????</struts>??</span>??
AccountAction.java
[java] view plaincopy
<span?style="font-size:?medium;">package?com.javacrazyer.web.action;????import?java.util.Date;????import?com.opensymphony.xwork2.ActionSupport;??????public?class?AccountAction?extends?ActionSupport?{??????private?static?final?long?serialVersionUID?=?-1418893621512812472L;??????private?Integer?id;??????private?String?name;??????private?String?pwd;??????private?String?pwd2;??????private?Double?score;??????private?Date?registed_date;??????private?String?email;????????????public?String?registe()?throws?Exception{??????????System.out.println("registe-------------------");??????????return?SUCCESS;??????}????????????public?String?login()throws?Exception{??????????return?SUCCESS;??????}????????????public?Integer?getId()?{??????????return?id;??????}??????public?void?setId(Integer?id)?{??????????this.id?=?id;??????}??????public?String?getName()?{??????????return?name;??????}??????public?void?setName(String?name)?{??????????this.name?=?name;??????}??????public?Double?getScore()?{??????????return?score;??????}??????public?void?setScore(Double?score)?{??????????this.score?=?score;??????}??????public?Date?getRegisted_date()?{??????????return?registed_date;??????}??????public?void?setRegisted_date(Date?registedDate)?{??????????registed_date?=?registedDate;??????}??????public?String?getEmail()?{??????????return?email;??????}??????public?void?setEmail(String?email)?{??????????this.email?=?email;??????}????????public?String?getPwd()?{??????????return?pwd;??????}????????public?void?setPwd(String?pwd)?{??????????this.pwd?=?pwd;??????}????????public?String?getPwd2()?{??????????return?pwd2;??????}????????public?void?setPwd2(String?pwd2)?{??????????this.pwd2?=?pwd2;??????}??}</span>??
AccountAction-validation.xml [與AccountAction同目錄]
[html] view plaincopy
<span?style="font-size:?medium;"><?xml?version="1.0"?encoding="UTF-8"?>??<!DOCTYPE?validators?PUBLIC???????"-//OpenSymphony?Group//XWork?Validator?1.0.2//EN"???????"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">??<validators>????????????<field?name="id">??????????<field-validator?type="required"?short-circuit="true">??????????????<message>ID必填的</message>??????????</field-validator>??????????<field-validator?type="int">??????????????<param?name="min">20</param>??????????????<param?name="max">50</param>??????????????<message>ID必須在?${min}?到?${max}?之間</message>??????????</field-validator>??????</field>??????<field?name="name">??????????<field-validator?type="requiredstring"?short-circuit="true">??????????????<message>姓名是必填的</message>??????????</field-validator>??????????<field-validator?type="regex">??????????????<param?name="expression"><![CDATA[(^[a-zA-Z_]\w{3,9}$)]]></param>??????????????<message>姓名不合法</message>??????????</field-validator>??????</field>??????<field?name="pwd">??????????<field-validator?type="requiredstring"?short-circuit="true">??????????????<message>密碼是必填的</message>??????????</field-validator>??????</field>??????????????????<validator?type="fieldexpression">??????????<param?name="fieldName">pwd</param>??????????<param?name="fieldName">pwd2</param>??????????<param?name="expression"><![CDATA[pwd==pwd2]]></param>??????????<message>確認密碼和密碼輸入不一致</message>??????</validator>????????????<field?name="score">??????????<field-validator?type="double">???????????????<param?name="minInclusive">0.0</param>?????????????????<param?name="maxInclusive">100.0</param>?????????????????<message>成績必須在${minInclusive}和${maxInclusive}之間</message>??????????</field-validator>??????</field>??????<field?name="email"?>??????????<field-validator?type="regex">???????????????<param?name="expression"><![CDATA[(^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-])+((\.com)|(\.cn)|(\.net)|(\.org)|(\.info)|(\.edu)|(\.mil)|(\.gov)|(\.biz)|(\.ws)|(\.us)|(\.tv)|(\.cc)|(\.aero)|(\.arpa)|(\.coop)|(\.int)|(\.jobs)|(\.museum)|(\.name)|(\.pro)|(\.travel)|(\.nato)|(\..{2,3})|(\..{2,3}\..{2,3}))$)]]></param>???????????????<message>郵箱不合法</message>??????????</field-validator>??????</field>????????????<field?name="registed_date">??????????<field-validator?type="date">???????????????<param?name="min">1970-01-01</param>???????????????<param?name="max">2019-01-01</param>???????????????<message>注冊日期不合法</message>??????????</field-validator>??????</field>??</validators></span>??
第二個示例:XML配置式校驗器---登錄和注冊頁面
user_login.jsp
[html] view plaincopy
<span?style="font-size:?medium;"><%@?page?language="java"?import="java.util.*"?pageEncoding="utf-8"%>??<%@?taglib?uri="/struts-tags"?prefix="s"?%>??<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">??<html>????<head>??????<title>Struts2中基于XML配置式的校驗器使用示例</title>????</head>????<body>??<h3>XML配置式校驗器---登錄頁面</h3><hr/>??<div?style="color:red"><s:fielderror/></div>??<form?action="user_login.action"?method="post">??????<table>??????????<tr>??????????????<td>登錄名</td>??????????????<td><input?type="text"?name="user.name"?value="${param['user.name']}"/></td>??????????</tr>??????????<tr>??????????????<td>密碼</td>??????????????<td><input?type="password"?name="user.pwd"/></td>??????????</tr>??????????<tr><td?colspan="2"><input?type="submit"?value="?提交?"/></td></tr>??????</table>??</form>????</body>??</html></span>??
user_registe.jsp
[html] view plaincopy
<span?style="font-size:?medium;"><%@?page?language="java"?import="java.util.*"?pageEncoding="utf-8"%>??<%@?taglib?uri="/struts-tags"?prefix="s"?%>??<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">??<html>????<head>??????<title>Struts2中基于XML配置式的校驗器使用示例</title>????</head>????<body>??<h3>XML配置式校驗器---注冊頁面</h3><hr/>????<div?style="color:red"><s:fielderror/></div>??<form?action="user_registe.action"?method="post">??????<table>??????????<tr>??????????????<td>ID</td>??????????????<td><input?type="text"?name="user.id"?value="${param['user.id']}"/></td>??????????</tr>??????????<tr>??????????????<td>登錄名</td>??????????????<td><input?type="text"?name="user.name"?value="${param['user.name']}"/></td>??????????</tr>??????????<tr>??????????????<td>密碼</td>??????????????<td><input?type="password"?name="user.pwd"/></td>??????????</tr>??????????<tr>??????????????<td>重復密碼</td>??????????????<td><input?type="password"?name="user.pwd2"/></td>??????????</tr>??????????<tr>??????????????<td>時間</td>??????????????<td><input?type="text"?name="user.registed_date"?value="${param['user.registed_date']}"/></td>??????????</tr>??????????<tr>??????????????<td>email</td>??????????????<td><input?type="text"?name="user.email"?value="${param['user.email']}"/></td>??????????</tr>??????????<tr>??????????????<td>考試成績</td>??????????????<td><input?type="text"?name="user.score"?value="${param['user.score']}"/></td>??????????</tr>??????????<tr>??????????????<td?colspan="2"><input?type="submit"?value="?提交?"/></td>??????????</tr>??????</table>??</form>????</body>??</html></span>??
src/struts.xml
[html] view plaincopy
<span?style="font-size:?medium;"><?xml?version="1.0"?encoding="UTF-8"??>??<!DOCTYPE?struts?PUBLIC??????"-//Apache?Software?Foundation//DTD?Struts?Configuration?2.1.7//EN"??????"http://struts.apache.org/dtds/struts-2.1.7.dtd">????<struts>????????????<constant?name="struts.i18n.encoding"?value="UTF-8"/>????????????<constant?name="struts.action.extension"?value="action,do,go,xkk"/>????????????<constant?name="struts.configuration.xml.reload"?value="true"/>????????????<constant?name="struts.devMode"?value="false"/>????????????<constant?name="struts.serve.static.browserCache"?value="false"?/>????????????<constant?name="struts.ognl.allowStaticMethodAccess"?value="true"/>????????????<!--?指定由spring負責action對象的創建???????<constant?name="struts.objectFactory"?value="spring"?/>??????-->????????????<constant?name="struts.enable.DynamicMethodInvocation"?value="false"/>????????????<package?name="my"?extends="struts-default"?namespace="/">??????????<action?name="user_*"?class="com.javacrazyer.web.action.UserAction"?method="{1}">??????????????<result?name="success">/info.jsp</result>??????????????<result?name="input">/user_{1}.jsp</result>??????????</action>??????</package>????????</struts>??</span>??
UserAction.java
[java] view plaincopy
<span?style="font-size:?medium;">package?com.javacrazyer.web.action;??????import?com.javacrazyer.domain.User;??import?com.opensymphony.xwork2.ActionSupport;??????public?class?UserAction?extends?ActionSupport?{??????private?static?final?long?serialVersionUID?=?-2554018432709689579L;??????private?User?user;?????????????????????????public?String?registe()?throws?Exception{??????????System.out.println("registe======================");??????????return?SUCCESS;??????}????????????public?String?login()?throws?Exception{??????????return?SUCCESS;??????}??????????????????????????????public?User?getUser()?{??????????return?user;??????}????????public?void?setUser(User?user)?{??????????this.user?=?user;??????}????????}</span>??
UserAction-user_login-validation.xml
[html] view plaincopy
<span?style="font-size:?medium;"><?xml?version="1.0"?encoding="UTF-8"?>??<!DOCTYPE?validators?PUBLIC???????"-//OpenSymphony?Group//XWork?Validator?1.0.2//EN"???????"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">??<validators>????????????<field?name="user">??????????<field-validator?type="required"?short-circuit="true">??????????????<message>用戶的信息必填</message>??????????</field-validator>??????????<field-validator?type="visitor">??????????????<param?name="context">userLoginContext</param>??????????????<param?name="appendPrefix">true</param>??????????????<message>用戶的</message>??????????</field-validator>??????</field>??</validators></span>??
UserAction-user_registe-validation.xml
[html] view plaincopy
<span?style="font-size:?medium;"><?xml?version="1.0"?encoding="UTF-8"?>??<!DOCTYPE?validators?PUBLIC???????"-//OpenSymphony?Group//XWork?Validator?1.0.2//EN"???????"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">??<validators>????????????<field?name="user">??????????<field-validator?type="required"?short-circuit="true">??????????????<message>用戶的信息必填</message>??????????</field-validator>??????????<field-validator?type="visitor">??????????????<param?name="context">userContext</param>??????????????<param?name="appendPrefix">true</param>??????????????<message>用戶的</message>??????????</field-validator>??????</field>??</validators></span>??
第三個示例:注解方式校驗器---注冊頁面
acc2_registe.jsp
[html] view plaincopy
<span?style="font-size:?medium;"><%@?page?language="java"?import="java.util.*"?pageEncoding="utf-8"%>??<%@?taglib?uri="/struts-tags"?prefix="s"?%>??<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">??<html>????<head>??????<title>Struts2中基于Annotation配置式的校驗器使用示例</title>????</head>????<body>??<h3>Annotation配置式校驗器---注冊頁面</h3><hr/>????<div?style="color:red"><s:fielderror/></div>??<form?action="acc2_registe.action"?method="post">??????<table>??????????<tr>??????????????<td>ID</td>??????????????<td><input?type="text"?name="id"?value="${param.id}"/></td>??????????</tr>??????????<tr>??????????????<td>登錄名</td>??????????????<td><input?type="text"?name="name"?value="${param.name}"/></td>??????????</tr>??????????<tr>??????????????<td>密碼</td>??????????????<td><input?type="password"?name="pwd"/></td>??????????</tr>??????????<tr>??????????????<td>重復密碼</td>??????????????<td><input?type="password"?name="pwd2"/></td>??????????</tr>??????????<tr>??????????????<td>時間</td>??????????????<td><input?type="text"?name="registed_date"?value="${param.registed_date}"/></td>??????????</tr>??????????<tr>??????????????<td>email</td>??????????????<td><input?type="text"?name="email"?value="${param.email}"/></td>??????????</tr>??????????<tr>??????????????<td>考試成績</td>??????????????<td><input?type="text"?name="score"?value="${param.score}"/></td>??????????</tr>??????????<tr>??????????????<td?colspan="2"><input?type="submit"?value="?提交?"/></td>??????????</tr>??????</table>??</form>????</body>??</html></span>??
src/struts.xml
[html] view plaincopy
<span?style="font-size:?medium;"><?xml?version="1.0"?encoding="UTF-8"??>??<!DOCTYPE?struts?PUBLIC??????"-//Apache?Software?Foundation//DTD?Struts?Configuration?2.1.7//EN"??????"http://struts.apache.org/dtds/struts-2.1.7.dtd">????<struts>????????????<constant?name="struts.i18n.encoding"?value="UTF-8"/>????????????<constant?name="struts.action.extension"?value="action,do,go,xkk"/>????????????<constant?name="struts.configuration.xml.reload"?value="true"/>????????????<constant?name="struts.devMode"?value="false"/>????????????<constant?name="struts.serve.static.browserCache"?value="false"?/>????????????<constant?name="struts.ognl.allowStaticMethodAccess"?value="true"/>????????????<!--?指定由spring負責action對象的創建???????<constant?name="struts.objectFactory"?value="spring"?/>??????-->????????????<constant?name="struts.enable.DynamicMethodInvocation"?value="false"/>????????????<package?name="my"?extends="struts-default"?namespace="/">??????????????<action?name="acc2_*"?class="com.javacrazyer.web.action.Account2Action"?method="{1}">??????????????<result?name="success">/info.jsp</result>??????????????<result?name="input">/acc2_{1}.jsp</result>??????????</action>??????</package>????????</struts>??</span>??
Account2Action.java
[java] view plaincopy
<span?style="font-size:?medium;">package?com.javacrazyer.web.action;????import?java.util.Date;????import?org.apache.struts2.interceptor.validation.SkipValidation;????import?com.opensymphony.xwork2.ActionSupport;??import?com.opensymphony.xwork2.validator.annotations.FieldExpressionValidator;??import?com.opensymphony.xwork2.validator.annotations.RegexFieldValidator;??import?com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;??import?com.opensymphony.xwork2.validator.annotations.Validations;??import?com.opensymphony.xwork2.validator.annotations.ValidatorType;?????????public?class?Account2Action?extends?ActionSupport?{??????private?static?final?long?serialVersionUID?=?-1418893621512812472L;??????private?Integer?id;??????private?String?name;??????private?String?pwd;??????private?String?pwd2;??????private?Double?score;??????private?Date?registed_date;??????private?String?email;??????????????????@Validations(??????????????requiredStrings={@RequiredStringValidator(fieldName="name",message="我的用戶名是必須的",shortCircuit=true,trim=true,type=ValidatorType.FIELD),??????????????????????@RequiredStringValidator(fieldName="pwd",message="我的密碼是必須的",shortCircuit=true,trim=true,type=ValidatorType.FIELD)},??????????????fieldExpressions={@FieldExpressionValidator(fieldName="pwd",?message="兩次密碼不相同",expression="pwd==pwd2")},??????????????regexFields={@RegexFieldValidator(expression="^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-])+((\\.com)|(\\.cn)|(\\.net)|(\\.org)|(\\.info)|(\\.edu)|(\\.mil)|(\\.gov)|(\\.biz)|(\\.ws)|(\\.us)|(\\.tv)|(\\.cc)|(\\.aero)|(\\.arpa)|(\\.coop)|(\\.int)|(\\.jobs)|(\\.museum)|(\\.name)|(\\.pro)|(\\.travel)|(\\.nato)|(\\..{2,3})|(\\..{2,3}\\..{2,3}))$")}??????)??????public?String?registe()?throws?Exception{??????????System.out.println("registe-------------------");??????????return?SUCCESS;??????}????????????@SkipValidation??????public?String?login()throws?Exception{??????????return?SUCCESS;??????}????????????public?Integer?getId()?{??????????return?id;??????}??????public?void?setId(Integer?id)?{??????????this.id?=?id;??????}??????public?String?getName()?{??????????return?name;??????}??????public?void?setName(String?name)?{??????????this.name?=?name;??????}??????public?Double?getScore()?{??????????return?score;??????}??????public?void?setScore(Double?score)?{??????????this.score?=?score;??????}??????public?Date?getRegisted_date()?{??????????return?registed_date;??????}??????public?void?setRegisted_date(Date?registedDate)?{??????????registed_date?=?registedDate;??????}??????public?String?getEmail()?{??????????return?email;??????}??????public?void?setEmail(String?email)?{??????????this.email?=?email;??????}????????public?String?getPwd()?{??????????return?pwd;??????}????????public?void?setPwd(String?pwd)?{??????????this.pwd?=?pwd;??????}????????public?String?getPwd2()?{??????????return?pwd2;??????}????????public?void?setPwd2(String?pwd2)?{??????????this.pwd2?=?pwd2;??????}??}</span>?
總結
以上是生活随笔為你收集整理的Struts2-表单验证的两种方式的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。