楠岃瘉妗嗘灦
WebWork
鎻愪緵浜嗗湪
Action
鎵ц涔嬪墠錛屽杈撳叆鏁版嵁鐨勯獙璇佸姛鑳斤紝瀹冧嬌鐢ㄤ簡鍏舵牳蹇?/span>
XWork
鐨勯獙璇佹鏋躲傛彁渚涗簡濡備笅鍔熻兘錛?/span>
1銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">聽聽
鍙厤緗殑楠岃瘉鏂囦歡銆傚畠鐨勯獙璇佹枃浠舵槸涓涓嫭绔嬬殑
XML
閰嶇疆鏂囦歡錛屽楠岃瘉鐨勬坊鍔犮佷慨鏀瑰彧闇鏇存敼閰嶇疆鏂囦歡錛屾棤闇緙栬瘧浠諱綍鐨?/span>
Class
銆?/span>
2銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">聽聽
楠岃瘉鏂囦歡鍜岃楠岃瘉鐨勫璞″畬鍏ㄨВ钘曘傞獙璇佸璞℃槸鏅氱殑
JavaBean
灝卞彲浠ヤ簡錛堝彲浠ユ槸
FormBean
銆佸煙瀵硅薄絳夛級錛屽畠浠笉闇瀹炵幇浠諱綍棰濆鐨勬柟娉曟垨緇ф壙棰濆鐨勭被銆?/span>
3銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">聽聽
澶氱涓嶅悓鐨勯獙璇佹柟寮忋傚洜涓哄畠楠岃瘉鍔熻兘鏄彲浠ョ戶鎵跨殑錛屾墍浠ュ彲浠ョ敤澶氱涓嶅悓鐨勬柟寮忔寚瀹氶獙璇佹枃浠訛紝姣斿錛氶氳繃鐖剁被鐨?/span>
Action
銆侀氳繃
Action
銆侀氳繃
Action
鐨勬柟娉曘侀氳繃
Action
鎵浣跨敤鐨勫璞★紝絳夌瓑銆?/span>
4銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">聽聽
寮哄ぇ鐨勮〃杈懼紡楠岃瘉銆傚畠浣跨敤浜?/span>
OGNL
鐨勮〃杈懼紡璇█錛屾彁渚涘己澶х殑琛ㄨ揪寮忛獙璇佸姛鑳姐?/span>
5銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">聽聽
鍚屾椂鏀寔鏈嶅姟鍣ㄧ鍜屽鎴風(fēng)楠岃瘉銆?/span>
涓嬮潰鎴戜滑鏉ョ湅鐪嬪浣曚負(fù)鐢ㄦ埛娉ㄥ唽娣誨姞楠岃瘉鍔熻兘錛?/span>
1銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">聽聽
娉ㄥ唽鎴戜滑鐨勯獙璇佺被鍨?/span>
WebWork
涓轟笉鍚岀殑楠岃瘉瑕佹眰鎻愪緵涓嶅悓鐨勯獙璇佺被鍨嬨備竴涓獙璇佺被鍨嬶紝涓鑸槸鏈変竴涓被鏉ユ彁渚涖傝繖涓被蹇呴』瀹炵幇鎺ュ彛錛?/span>
com.opensymphony.xwork.validator.Validator
錛屼絾鎴戜滑鍦ㄥ啓鑷繁鐨勯獙璇佺被鍨嬫椂錛屾棤闇鐩存帴瀹炵幇
Validator
鎺ュ彛錛屽畠鏈夋娊璞$被鍙緵鐩存帴浣跨敤濡?/span>
ValidatorSupport
銆?/span>
FieldValidatorSupport
絳夈?/span>
楠岃瘉綾誨瀷鍦ㄤ嬌鐢ㄤ箣鍓嶏紝蹇呴』瑕佸湪
ValidatorFactory
錛?/span>
com.opensymphony.xwork.validator
. ValidatorFactory
錛変腑
娉ㄥ唽銆傚彲浠ユ湁浜岀鏂規(guī)硶瀹炵幇楠岃瘉綾誨瀷鐨勬敞鍐屻備竴銆佸啓紼嬪簭浠g爜榪涜娉ㄥ唽錛屽畠浣跨敤
ValidatorFactory
綾葷殑闈欐佹柟娉曪細(xì)
registerValidator(String name, String className)
銆?/span>
浜屻佷嬌鐢ㄩ厤緗枃浠?/span>
validators.xml
榪涜娉ㄥ唽錛岃姹傛妸鏂囦歡
validators.xml
鏀懼埌
ClassPath
鐨勮窡鐩綍涓紙
/WEB-INF/classes
錛夈備絾鍦ㄥ疄闄呭紑鍙戜腑錛屼竴鑸兘浣跨敤絎簩涓敞鍐屾柟娉曘傛垜浠殑楠岃瘉綾誨瀷娉ㄥ唽濡備笅錛?/span>
<validators>
聽聽聽 <validator name="required" class="com.opensymphony.xwork.validator.validators.RequiredFieldValidator"/>
聽聽 聽<validator name="requiredstring" class="com.opensymphony.xwork.validator.validators.RequiredStringValidator"/>
聽聽聽 <validator name="int" class="com.opensymphony.xwork.validator.validators.IntRangeFieldValidator"/>
聽聽聽 <validator name="date" class="com.opensymphony.xwork.validator.validators.DateRangeFieldValidator"/>
聽聽聽 <validator name="expression" class="com.opensymphony.xwork.validator.validators.ExpressionValidator"/>
聽聽聽 <validator name="fieldexpression" class="com.opensymphony.xwork.validator.validators.FieldExpressionValidator"/>
聽聽聽 <validator name="email" class="com.opensymphony.xwork.validator.validators.EmailValidator"/>
聽聽聽 <validator name="url" class="com.opensymphony.xwork.validator.validators.URLValidator"/>
聽聽聽 <validator name="visitor" class="com.opensymphony.xwork.validator.validators.VisitorFieldValidator"/>
聽聽聽 <validator name="conversion" class="com.opensymphony.xwork.validator.validators.ConversionErrorFieldValidator"/>
聽聽聽 <validator name="stringlength" class="com.opensymphony.xwork.validator.validators.StringLengthFieldValidator"/>
</validators>
娉ㄥ唽楠岃瘉綾誨瀷鐨勯厤緗枃浠墮潪甯哥畝鍗曘傚畠浣跨敤鏍囩
<validator
>
鎻愪緵鍚嶏紞鍊煎鐨勫艦寮忔敞鍐屻傝繖鏍鋒垜浠殑楠岃瘉鏂囦歡灝卞彲浠ョ洿鎺ュ紩鐢ㄥ畠鐨勫悕瀛椼?/span>
2銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">聽聽
寮鍚?/span>
Action
鐨勯獙璇佸姛鑳?/span>
聽
濡傛灉
Action
瑕佷嬌鐢ㄩ獙璇佹鏋剁殑楠岃瘉鍔熻兘錛屽畠蹇呴』鍦ㄩ厤緗枃浠朵腑鎸囧畾鎷︽埅鍣ㄢ?/span>
validation
鈥濓紝瀹冪殑瀹氫箟濡備笅錛?/span>
<interceptor name="validation" class="com.opensymphony.xwork.validator.ValidationInterceptor"/>
銆?/span>
鎴戜滑鐨勯獙璇佹枃浠跺繀欏諱互
ActionName-validation.xml
鏍煎紡鍛藉悕錛屽畠蹇呴』琚斁緗埌涓庤繖涓?/span>
Action
鐩稿悓鐨勫寘涓備綘涔熷彲浠ヤ負(fù)榪欎釜
Action
閫氳繃鍒悕鐨勬柟寮忔寚瀹氶獙璇佹枃浠訛紝瀹冪殑鍛藉悕鏍煎紡涓猴細(xì)
ActionName-aliasname-validation.xml
銆傗?/span>
ActionName
鈥濇槸鎴戜滑
Action
鐨勭被鍚嶏紱鈥?/span>
aliasname
鈥濇槸鎴戜滑鍦ㄩ厤緗枃浠訛紙
xwork.xml
錛変腑瀹氫箟榪欎釜
Action
鎵鐢ㄥ埌鐨勫悕縐般傝繖鏍鳳紝鍚屼竴涓?/span>
Action
綾伙紝鍦ㄩ厤緗枃浠朵腑鐨勪笉鍚屽畾涔夊氨鍙互瀵瑰簲涓嶅悓鐨勯獙璇佹枃浠躲傞獙璇佹鏋朵篃浼?xì)鏍规?/span>
Action
鐨勭戶鎵跨粨鏋勫幓鏌ユ壘
Action
鐨勭埗綾婚獙璇佹枃浠訛紝濡傛灉鎵懼埌瀹冧細(xì)鍘繪墽琛岃繖涓埗綾葷殑楠岃瘉銆?/span>
聽
3銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">聽聽
瀹炵幇鎴戜滑鐨勯獙璇佹枃浠訛細(xì)
RegisterActionSupport-validation.xml
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">
<validators>
聽聽聽 <field name="user.username">
聽聽聽 <field-validator type="requiredstring">
聽聽聽聽聽聽聽聽聽聽聽 <message>You must enter a value for username.</message>
聽聽聽聽聽聽聽 </field-validator>
聽聽聽 </field>
聽聽聽 <field name="user.password">
聽聽聽 <field-validator type="requiredstring">
聽聽聽聽聽聽聽聽聽聽聽 <message>You must enter a value for password.</message>
聽聽聽聽聽聽聽 </field-validator>
聽聽聽聽聽聽聽 <field-validator type="fieldexpression">
聽聽聽聽聽聽聽聽聽聽聽 <param name="expression">user.password == verifyPassword</param>
聽聽聽聽聽聽聽聽聽聽聽 <message>Passwords don't match.</message>
聽聽聽聽聽聽聽 </field-validator>
聽聽聽 </field>
聽聽聽 <field name="user.email">
聽聽聽 <field-validator type="email">
聽聽聽聽聽聽聽聽聽聽聽 <message>You must enter a valid email.</message>
聽聽聽聽聽聽聽 </field-validator>
聽聽聽 </field>
聽聽聽 <field name="user.age">
聽聽聽 <field-validator type="int">
聽聽聽聽聽聽聽聽聽聽聽 <param name="min">6</param>
聽聽聽聽聽聽聽聽聽聽聽 <param name="max">100</param>
聽聽聽聽聽聽聽聽聽聽聽 <message>Age must be between ${min} and ${max}, current value is ${user.age}.</message>
聽聽聽聽聽聽 聽</field-validator>
聽聽聽 </field>
</validators>
璇存槑錛?/span>
1
錛夈?/span>
<field
>
鏍囩浠h〃涓涓瓧孌碉紝瀹冪殑灞炴р?/span>
name
鈥濆拰欏甸潰杈撳叆妗嗙殑鈥?/span>
name
鈥濆睘鎬у繀闇瀹屽叏涓鑷達(dá)紝鍏跺疄瀹冧篃灝辨槸鎴戜滑鐨勮〃杈懼紡璇█銆?/span>
2
錛夈?/span>
<field-validator
>
鏍囩瀹氫箟鎴戜滑鐨勯獙璇佽鍒欙紝
type
灞炴х殑鍊煎氨鏄氨鏄垜浠墠闈㈠畾涔夌殑楠岃瘉綾誨瀷銆?/span>
3
錛夈侀獙璇佹枃浠朵腑錛屽瓧孌電殑鏁版嵁鏄氳繃琛ㄨ揪寮忚璦浠庢垜浠殑鍊煎爢鏍堬紙
OgnlValueStack
錛変腑鍙栧緱錛屼竴鑸槸
Action
鎴?/span>
Model
瀵硅薄銆備緥濡傦細(xì)鎴戜滑鐨勫瓧孌碘?/span>
user.age
鈥濓紝瀹冧細(xì)閫氳繃
Action
鐨?/span>
getUser().getAge()
鏉ュ彇寰楃敤鎴瘋緭鍏ョ殑騫撮緞錛屽啀鏉ユ牴鎹獙璇佺殑綾誨瀷鈥?/span>
int
鈥濆拰鏈澶у兼渶灝忓肩殑鍙傛暟鏉ュ垽鏂緭鍏ョ殑鏁版嵁鏄惁鑳介氳繃楠岃瘉銆?/span>
4
錛夈佷笉綆¢獙璇佹槸鍚﹂氳繃錛屾垜浠殑
Action
閮戒細(xì)鎵ц錛屼絾濡傛灉楠岃瘉娌℃湁閫氳繃錛屽畠涓嶄細(xì)璋冪敤
Action
鐨?/span>
execute()
鏂規(guī)硶銆?/span>
聽
4銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">聽聽
鏄劇ず
Action
鐨勯獙璇侀敊璇俊鎭?/span>
濡傛灉鐢ㄦ埛杈撳叆鐨勬暟鎹獙璇佹病鏈夐氳繃錛屾垜浠渶閲嶆柊榪斿洖杈撳叆欏甸潰錛屽茍緇欏嚭閿欒淇℃伅鎻愮ず銆傛嫤鎴櫒鏍堚?/span>
validationWorkflowStack
鈥濅負(fù)鎴戜滑瀹炵幇浜嗚繖涓姛鑳姐傚畠棣栧厛楠岃瘉鐢ㄦ埛杈撳叆鐨勬暟鎹紝濡傛灉楠岃瘉娌℃湁閫氳繃灝嗕笉鎵ц鎴戜滑
Action
鐨?/span>
execute()
鏂規(guī)硶錛岃屾槸灝嗚姹傞噸鏂拌繑鍥炲埌杈撳叆欏甸潰銆?/span>
鎴戜滑鐨?/span>
xwork.xml
閰嶇疆鏂囦歡濡備笅錛?/span>
<action name="registerSupport" class="example.register.RegisterActionSupport">
聽聽聽聽聽聽聽聽聽聽聽 <result name="success" type="dispatcher">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <param name="location">/register-result.jsp</param>
聽聽聽聽聽聽聽聽聽聽聽 </result>
聽聽聽聽聽聽聽聽聽聽聽 <result name="input" type="dispatcher">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <param name="location">/registerSupport.jsp</param>
聽聽聽聽聽聽聽聽聽聽聽 </result>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="validationWorkflowStack"/>
聽聽聽聽聽聽聽 </action>
聽
閫氳繃鎺ュ彛
ValidationAware
錛?/span>
鎴戜滑鍙互鑾峰緱綾葷駭鍒垨瀛楁綰у埆鐨勯獙璇侀敊璇俊鎭紝榪欎釜閿欒淇℃伅涔熷氨鏄垜浠獙璇佹枃浠朵腑
<message>
鏍囩閲岀殑鏁版嵁銆?/span>
ActionSupport
綾誨凡瀹炵幇浜嗘鎺ュ彛錛岃繖鏍峰湪搴旂敤涓垜浠殑
Action
鍙緇ф壙
ActionSupport
綾誨氨鍙互浜嗐?/span>
RegisterActionSupport
.java
浠g爜濡備笅錛?/span>
package
example.register;
聽
import
com.opensymphony.xwork.ActionSupport;
聽
public
class RegisterActionSupport extends ActionSupport {
聽
聽聽聽 private User user= new User();
聽聽聽 private String verifyPassword;
聽聽聽
聽聽聽 public User getUser(){
聽聽聽聽聽聽聽 returnthis.user;
聽聽聽 }
聽聽聽
聽聽聽 public String execute(){
聽聽聽聽聽聽聽 //
鍦ㄨ繖閲岃皟鐢ㄧ敤鎴鋒敞鍐岀殑涓氬姟閫昏緫錛屾瘮濡傦細(xì)灝嗘敞鍐屼俊鎭瓨鍌ㄥ埌鏁版嵁搴?/span>
聽聽聽聽聽聽聽 return SUCCESS;
聽聽聽 }
聽
聽聽聽 public String getVerifyPassword(){
聽聽聽聽聽聽聽 returnthis.verifyPassword;
聽聽聽 }
聽聽聽
聽聽聽 publicvoid setVerifyPassword(String verPassword){
聽聽聽聽聽聽聽 this.verifyPassword = verPassword;
聽聽聽 }
}
鎴戜滑
WebWork
鐨?/span>
UI
鏍囩搴撶洿鎺ユ彁渚涗簡楠岃瘉閿欒淇℃伅鏄劇ず鍔熻兘銆傚鏋滃瓧孌電駭鍒殑楠岃瘉娌℃湁閫氳繃錛屽畠浼?xì)鍦ㄨ緭鍏ユ涓婃栆?guī)樉紺洪獙璇佹枃浠跺畾涔夌殑閿欒鎻愮ず淇℃伅銆傛垜浠皢鐢ㄦ埛杈撳叆鐨勯〉闈㈡洿鏀瑰涓嬶細(xì)
registerSupport.jsp
<%@ taglib uri="webwork" prefix="ww" %>
<html>
<head><title>Register Example</title></head>
<body>
<table border=0 width=97%>
<tr><td align="left">
聽聽聽 <ww:form name="'test'" action="'/example/registerSupport.action'" method="'POST'">
聽聽聽聽聽聽聽聽聽聽聽 <ww:textfield label="'Username'" name="'user.username'" required="true"/>
聽聽聽聽聽聽聽聽聽聽聽 <ww:textfield label="'Password'" name="'user.password'" required="true"/>
聽聽聽聽聽聽聽聽聽聽聽 <ww:textfield label="'VerifyPassword'" name="'verifyPassword'" required="true"/>
聽聽聽聽聽聽聽聽聽聽 聽<ww:textfield label="'Email'" name="'user.email'" required="true"/>
聽聽聽聽聽聽聽聽聽聽聽 <ww:textfield label="'Age'" name="'user.age'" required="true"/>
聽聽聽聽聽聽聽聽聽聽聽 <ww:submit value="'Submit'"/>
聽聽聽聽聽聽聽聽 </ww:form>
</td></tr>
</table>
</body>
</html>
鎴戜滑涓婇潰鐨勪緥瀛愪嬌鐢ㄧ殑鏄湇鍔″櫒绔獙璇併?/span>
WebWork
涔熶負(fù)鎴戜滑鎻愪緵浜嗘柟渚跨殑瀹㈡埛绔獙璇併傚畠?yōu)畣楠岃瘉鑷姩鐢熸?/span>
JavaScript
鑴氭湰銆傚鏋滆浣跨敤瀹㈡埛绔獙璇佸彧闇鏀瑰彉鐩稿簲鐨勯獙璇佺被鍨嬪氨鍙互浜嗭紙杈撳叆欏甸潰鐨勮〃鍗曞繀闇浣跨敤
<ww:form>
鏍囩錛屽茍璁劇疆灞炴р?/span>
validate="true"
鈥濓級銆傚叿浣撶殑楠岃瘉綾誨瀷鍙互鍦?/span>
WebWork
鐨勫寘
com.opensymphony.webwork.validators
涓壘鍒般?/span>

]]>