锘??xml version="1.0" encoding="utf-8" standalone="yes"?><!-- Action -->
<action
attribute="loginForm"
name="loginForm"
path="/login"
scope="request"
type="org.svse.struts.action.LoginAction">
<forward name="ok" path="/ok.jsp"></forward>
<forward name="error" path="/error.jsp"></forward>
</action>
<!-- DispatchAction -->
<action
attribute="calForm"
name="calForm"
parameter="method"
path="/cal"
scope="request"
type="org.svse.struts.action.CalAction">
<forward name="result" path="/cal_result.jsp"></forward>
</action>
<script type="text/javascript">
function dosubmit(url){
var myform = document.myform;
myform.action = url;
myform.submit();
}
</script>
</head>
<body>
<!-- 涓涓〃鍗曞涓寜閽?nbsp;-->
<form method="post" name="myform">
絎竴涓暟:<input type="text" name="num1"><br>
絎簩涓暟:<input type="text" name="num2"><br>
<input type="button" value="鍔?/span>" onclick="dosubmit('cal.do?method=add')">
<input type="button" value="鍑?/span>" onclick="dosubmit('cal.do?method=sub')">
<input type="button" value="涔?/span>" onclick="dosubmit('cal.do?method=mul')">
<input type="button" value="闄?/span>" onclick="dosubmit('cal.do?method=div')">
</form>
</body>
//閫氳繃璧勬簮鏂囦歡鐨刱ey(button.add),鏉ユ壘鍒頒笟鍔℃柟娉昦dd(),sub()
protected Map getKeyMethodMap() {
Map map = new HashMap();
map.put("button.add","add");
map.put("button.sub","sub");
return map;
}
# Resources for parameter 'org.svse.struts.ApplicationResources'
# Project ch03
button.add=add
button.sub=sub
<!-- 涓涓〃鍗曞涓彁浜?nbsp;-->
<form action="cal2.do" method="post">
num1:<input type="text" name="num1"/><br>
num2:<input type="text" name="num2"/><br>
<html:submit property="method">
<bean:message key="button.add"/>
</html:submit>
<html:submit property="method">
<bean:message key="button.sub"/>
</html:submit>
<form>
<!-- MappingDispatchAction -->
<!-- add -->
<action
attribute="calForm"
name="calForm"
parameter="add"
path="/add"
scope="request"
type="org.svse.struts.action.Cal3Action">
<forward name="result" path="/cal_result.jsp" />
</action>
<!-- sub -->
<action
attribute="calForm"
name="calForm"
parameter="sub"
path="/sub"
scope="request"
type="org.svse.struts.action.Cal3Action">
<forward name="result" path="/cal_result.jsp" />
</action>
<form action="add.do" method="post">
num1:<input type="text" name="num1"><br>
num2:<input type="text" name="num2"><br>
<input type="submit" value="鍔?/span>">
</form>
]]>
1.HTML Tag錛?/p>
鐢ㄦ潵鍒涘緩鑳藉鍜孲truts妗嗘灦浠ュ強鍏跺畠鐩稿簲鐨凥TML鏍囩浜や簰鐨凥TML杈撳叆琛ㄥ崟;
濡傦細<html錛歠orm></html錛歠orm>錛?lt;html錛歵ext/>錛?lt;html錛歱assword/>錛?lt;html錛歳adio/>錛?lt;html錛歝heckbox/>錛?lt;htmlmultibox>
2.Bean Tag
璇ユ爣絳懼簱鍖呭惈鐨勬爣絳懼彲浠ョ敤鏉ュ垱寤篵ean銆佽闂産ean鍜岃闂産ean鐨勫睘鎬с?/p>
濡傦細<bean錛歸rite/>錛氱敤浜庡皢bean鐨勫睘鎬ц緭閫佸埌jsp欏甸潰錛?lt;bean錛歞efine/>瀹氫箟涓涓柊鐨刡ean
3.Logic Tag
璇ユ爣絳懼簱鍖呭惈鐨勬爣絳懼彲浠ョ敤鏉ヨ繘琛岄昏緫鍒ゆ柇銆侀泦鍚堣凱浠e拰嫻佺▼鎺у埗銆?/p>
濡傦細<logic錛歩terate/>錛氱敤鏉ュ驚鐜凱浠?<logic錛歟aual/>錛氱敤鏉ヨ繘琛岄昏緫鍒ゆ柇
4.Nested錛氬寮哄鍏朵粬Struts鏍囩鐨勫祵濂椾嬌鐢ㄨ兘鍔?/p>
璇ユ爣絳懼簱寤虹珛鍦ㄥ墠涓変釜鏍囩搴撶殑鍩虹涓婏紝鍏鋒湁鍓嶄笁涓爣絳懼簱鐨勬墍鏈夊姛鑳斤紝鍙槸鍏佽鏍囩闂寸殑宓屽銆?/p>
5.Template Tag
闅忕潃Titles妗嗘灦鍖呯殑鍑虹幇,姝ゆ爣璁板凡寮濮嬪噺灝戜嬌鐢?/p>
涓嬮潰浠嬬粛鍑犱釜鏈甯哥敤鐨勬爣絳撅細
<html錛歝heck box/>涓鑸敤浜庝竴涓夐」鐨勫閫夋
<html錛歮ultibox/>涓鑸敤浜庡涓夐」鐨勫閫夋
<bean錛歸rite name="user" property="username"/>絳夊悓浜嶦L琛ㄨ揪紺猴細${user.username}
<bean錛歞efine id="inter" name="user" property="interest" type="java.lang.String"/>瀹氫箟涓涓猙ean
<bean錛歮essage key=" " arg0=" "/> key 瀹氫箟鍦ㄨ祫婧愭枃浠朵腑錛宎rgs0[1,2]涓哄弬鏁?/p>
<logic錛歩terate name="list" id="user"> 絳夊悓浜嶫STL鐨勶細<c錛歠oeach item=${list} var="user"/>
<logic錛歟qual name="user" property="sex" value="0"/>絳夊悓浜嶫STL鐨勶細<c錛歸hen test=""/>
<logic錛歟mpty />鏍囩鏄敤鏉ュ垽鏂槸鍚︿負絀虹殑銆傚鏋滀負絀猴紝璇ユ爣絳句綋涓祵鍏ョ殑鍐呭灝變細琚鐞?/p>
<logic:empty name="listForm" property = "persons">
<div>闆嗗悎persons涓虹┖!</div>
</logic:empty>
1.涓嬮潰緇欎竴涓〃鍗曠殑瀹屾暣浠g爜錛?/p>
浣跨敤html鏍囩浣滀負琛ㄥ崟杈撳叆錛屽彲浠ユ柟渚跨殑浣跨敤楠岃瘉妗嗘灦鍗籌細<html:errors property="username">
2.涓嬮潰緇欎竴涓樉紺烘暟鎹殑浠g爜錛?/p>
浣滀負鏄劇ず鏁版嵁錛孲truts鏍囩騫朵笉姣擩stl涓嶦L鏂逛究錛屽洜姝わ紝鏈漢鏇翠範鎯敤鍚庤?/span>
鍏跺疄Struts鏍囩鐨勫ソ澶勶紝騫朵笉鏄笂闈㈣繖浜涳紝鑰屾槸瀹冨彲鍒╃敤ActionForm鏉ュ~鍏呮暟鎹?/span>
姣斿鎴戜滑鍦ㄥ仛欏甸潰鏁版嵁淇敼鐨勬椂鍊欙紝浼氳褰撳墠欏甸潰鏁版嵁鏄劇ず鍒版樉紺轟慨鏀歸〉闈紝榪欐牱鍒╀簬瀹㈡埛绔慨鏀?/span>
浠ュ墠鎴戜滑榪欐牱鍋氱殑錛氭牴鎹甶d浠庢暟鎹簱鏌ュ嚭錛岀劧鍚庝嬌鐢╤tml鐨剉alue灞炴у~鍏咃紝鐜板湪鏈変簡Struts鏍囩錛屽氨涓嶉渶瑕侀偅涔堥夯鐑︿簡
鐩存帴鍦ˋction閲屽~鍏匒ctionForm鐨勬暟鎹氨鎼炲畾浜?/span>錛?/p>
1.ActionForm 2.ValidatorForm 3.ValidatorActionForm 4.DynaActionForm 5.DynaValidatorForm 6.DynaValidatorActionForm 7.LazyValidatorForm 鐢卞懡鍚嶆潵鐪嬶紝灝辨諱綋浣跨敤瑙勫緥濡備笅錛?/p>
1.甯︽湁Validator鐨勶紝浣嗛兘鍙嬌鐢ㄩ獙璇佹鏋? 2.浠yna寮澶寸殑錛岄兘鏄嚜鍔ㄧ敓鎴愮浉搴旂殑form錛屽彧闇鍦⊿truts-config.xml涓厤緗睘鎬у嵆鍙?/span> 3.涓棿鏄惁鏈堿ction鐨勶紝琛ㄧずvalidation.xml涓殑form鐨刵ame鍚嶏紝鏄窡formbean鐨勫悕縐幫紝榪樻槸/path璺緞 涓嬮潰鎸夎寰嬮愪釜浠嬬粛錛?/p>
1.ActionForm,DynaActionForm姝ょ被涓嶆敮鎸侀獙璇佹鏋訛紝闇鎵嬪姩鍒涘緩form錛屽茍瀹炵幇鑷畾涔夌殑validate()鏂規硶 浣咲ynaActionForm鏄壒渚?瀹冭嚜鍔ㄧ敓鎴恌orm)錛屾墍浠ユ病鏈塿alidate()鏂規硶錛屾墍浠ヤ篃灝變笉鑳介獙璇?br />
2.ValidatorForm錛孷alidatorActionForm錛孌ynaValidatorForm DynaValidatorActionForm錛孡azyValidatorForm 姝ゅぇ綾婚兘鏄敮鎸侀獙璇佹鏋剁殑,褰撶劧涔熷彲浠ュ畬鎴愯嚜瀹氫箟鐨剉alidate()鏂規硶,鏉ヨ鐩栭獙璇佹鏋剁殑鏂規硶錛屽叾涓細 ValidatorForm錛孌ynaValidatorForm錛孡azyValidatorForm 娌℃湁Action錛屾槸閽堝form鏉ラ獙璇佺殑錛屽嵆鍑℃槸鐢ㄥ埌璇orm鐨勯〉闈紝閮藉繀欏婚獙璇侊紱 鍙嶄箣錛孷alidatorActionForm錛孌ynaValidatorActionForm錛屽垯鏄拡瀵笰ction鐨勶紝瑕侀獙璇佸摢涓狝ction錛屽氨璺熼偅涓?path璺緞錛寁alidation.xml浠g爜濡備笅錛?/p>
閽堝涓冪ActionForm錛屾垜浠鐏墊椿榪愮敤錛岄渶瑕侀獙璇佽皝錛屽氨璁╁畠鍋滀笅錛屼笉闇瑕佺殑錛岃瀹冮氳繃銆?/p>
鍙﹀浠嬬粛涓嬮獙璇佹鏋剁殑浣跨敤姝ラ錛?/p>
1.鍦╲alidator-rules.xml涓紩鍏ラ獙璇佹彃浠剁殑浠g爜錛?/p>
public ActionForward upd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;
int userid = Integer.parseInt(request.getParameter("userid"));
UserInfo user = biz.findUser(userid);
String[]interest = StringUtil.stringChange2(user.getInterest());
//灝嗙敤鎴蜂俊鎭~鍏呭埌ActionForm
userForm.setUser(user);
userForm.setInterest(interest);
return mapping.findForward("upd");
}
<html:form action="/doupd">
鐢ㄦ埛鍚嶏細<html:text property="user.username"></html:text><p/>
瀵嗙爜錛?/span><html:text property="user.pwd"></html:text><p/>
鎬у埆錛?/span><html:radio property="user.sex" value="鐢?/span>">鐢?/span></html:radio>
<html:radio property="user.sex" value="濂?/span>">濂?/span></html:radio><p/>
鍩庡競錛?/span><html:select property="user.city">
<html:option value="">璇烽夋嫨</html:option>
<html:option value="姝︽眽">姝︽眽</html:option>
<html:option value="涓婃搗">涓婃搗</html:option>
<html:option value="鍖椾含">鍖椾含</html:option>
</html:select><p/>
鐖卞ソ錛?/span><html:multibox property="interest" value="鐪嬩功"/>鐪嬩功
<html:multibox property="interest" value="娓告垙"/>娓告垙
<html:multibox property="interest" value="鐫¤"/>鐫¤<p/>
<html:submit value="淇敼"/>
</html:form>
]]><form-validation>
<formset>
<!-- 姝ゆ椂閽堝Action楠岃瘉,name璺?/span>/path璺緞--!>
<!--濡傛灉鏄拡瀵筬orm楠岃瘉錛宯ame鍒欒窡formbean鐨勫悕縐?/span>--!>
<form name="/login">
<field property="username" depends="required">
<msg name="required" key="username"/>
</field>
<field property="pwd" depends="required,minlength">
<msg name="required" key="pwd"/>
<msg name="minlength" key="pwd1"/>
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
<!--寮曞叆楠岃瘉妗嗘灦--!>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
<formset>
<form name="loginForm">
<field property="username" depends="required">
<msg name="required" key="username"/>
</field>
<field property="pwd" depends="required,minlength">
<msg name="required" key="pwd"/>
<msg name="minlength" key="pwd1"/>
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
# Resources for parameter 'ApplicationResources'
# Project ch07
username=username is null
pwd=pwd is null
pwd1=pwd is less than 6
]]>