锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
//浣跨敤浜咮order榪欎釜鐩村畾涔夌殑緇勪歡錛圔order.html錛?Border.jwc錛?Border.java)
<span jwcid="@Border">
<TABLE align=center border=0>
<TR>
<TD>榪欐槸宓屽叆欏甸潰</TD>
</TR>
</TABLE>
<br/>
</span>
//Border.html
<html jwcid="@Shell" title="RenderBody Example">
<body jwcid="@Body">
<table width="100%" cellspacing="0" border="0">
<tr>
<td>鍦ㄨ繖閲屽紑濮?lt;/td>
</tr>
<tr>
<td>
<span jwcid="@RenderBody">Page content goes here.</span>
</td>
</tr>
<tr>
<td>鍦ㄨ繖閲岀粨鏉?lt;/td>
</tr>
</table>
</body>
</html>
鏈鍚庣殑緇撴灉鏄?
<html jwcid="@Shell" title="RenderBody Example">
<body jwcid="@Body">
<table width="100%" cellspacing="0" border="0">
<tr>
<td>鍦ㄨ繖閲屽紑濮?lt;/td>
</tr>
<tr>
<td>
<TABLE align=center border=0>
<TR>
<TD>榪欐槸宓屽叆欏甸潰</TD>
</TR>
</TABLE>
<br/>
</td>
</tr>
<tr>
<td>鍦ㄨ繖閲岀粨鏉?lt;/td>
</tr>
</table>
</body>
</html>
欏甸潰鍝嶅簲鏃訛紝鍒涘緩浜嗕竴涓摼鎺ャ傚鏋滆Е鍙戜簡閾炬帴鏃訛紝緇勪歡ActionLink寰楀埌涓涓洃鍚櫒錛堥氳繃璋冪敤鏂規硶actionTriggered()錛夈?BR>
DirectLink緇勪歡
DirectLink緇勪歡娑夊強鍒?/FONT>session錛屼笌ExternalLink緇勪歡鐨勫尯鍒湁涓や釜錛?BR> 絎竴錛?DirectLink娑夊強session錛?/FONT>DirectLink鎷ユ湁涓涓?/FONT>boolean綾誨瀷鐨?/FONT>stateful鍙傛暟鏉ラ夋嫨stateful鎴?/FONT>stateless錛岃鍙傛暟榛樿涓?/FONT>true錛屽嵆stateful銆傝?/FONT>ExternalLink鍗翠笉娑夊強session錛?/FONT>ExternalLink浠呬粎鏄?/FONT>stateless錛屼笉鑳藉閫夋嫨銆?
絎簩錛氶潪甯擱噸瑕佺殑鏄紝DirectLink涓?/FONT>ExternalLink鍙傛暟浼犻掓柟寮忎笉涓鏍楓?/FONT>DirectLink閫氳繃listener鐩戝惉鏂規硶灝嗗弬鏁扳滄墧鈥濈粰涓嬩竴涓〉闈€傝?/FONT>ExternalLink閫氳繃鍦ㄤ笅涓涓〉闈㈠疄鐜?/FONT>IExternalPage鎺ュ彛浠ュ強activateExternalPage鏂規硶鈥滄帴鏀垛濆弬鏁般?/SPAN>
涓轟簡瀹炵幇鍒嗛〉鍔熻兘錛屾垜浠嬌鐢?/FONT>DirectLink緇勪歡瀹炵幇銆傚湪涓嬮潰鐨勪緥瀛?FONT color=#000000>錛屾瘡涓〉闈㈡垜浠彧鏄劇ず10鏉℃暟鎹紝閭d箞HQL灝卞彧浠庢暟鎹簱涓煡璇㈠嚭10鏉℃暟鎹傚浜庨〉闈㈡潵璇達紝灝遍渶瑕佸疄鐜扳滀笅涓欏碘濓紙鎴栤滀笂涓欏碘濓級欏甸潰璺寵漿錛屼互鍙婂悜鎴戜滑鐨勪笟鍔¢昏緫灞傛柟娉曚紶閫掑垎欏靛弬鏁幫紙鍗沖綋鍓嶉〉鐮侊紝浠ュ強姣忛〉鏄劇ず鏁版嵁鏁幫級銆?BR>璇風湅瀵瑰簲鐨?/FONT>HTML鏂囦歡涓浉鍏充唬鐮侊細
<span jwcid="@Conditional" condition="ognl:firstDisable">
<span jwcid="first">棣栭〉</span>
<span jwcid="previous">涓婁竴欏?/FONT></span>
</span>
絎?<span jwcid="@Insert" value="ognl:pageNo" /> 欏?/FONT>
<span jwcid="@Conditional" condition="ognl:lastDisable">
<span jwcid="next">涓嬩竴欏?/FONT></span>
<span jwcid="last">灝鵑〉</span>
</span>
鍏?/FONT> <span jwcid="@Insert" value="ognl:total" /> 欏?/FONT>
鍦?/SPAN>page鏂囦歡涓0鏄庣浉鍏崇粍浠訛細
<component id="first" type="DirectLink">
<binding name="listener" expression="listeners.changePage"/>
<binding name="parameters" expression="new java.lang.Object[]{first,maxResult}"/>
</component>
<component id="previous" type="DirectLink">
<binding name="listener" expression="listeners.changePage"/>
<binding name="parameters" expression="new java.lang.Object[]{previous, maxResult}"/>
<binding name="disabled" expression="previousDisable"/>
</component>
<component id="next" type="DirectLink">
<binding name="listener" expression="listeners.changePage"/>
<binding name="parameters" expression="new java.lang.Object[]{next, maxResult}"/>
<binding name="disabled" expression="nextDisable"/>
</component>
<component id="last" type="DirectLink">
<binding name="listener" expression="listeners.changePage"/>
<binding name="parameters" expression="new java.lang.Object[]{last,maxResult}"/>
</component>
DirectLink緇勪歡琛ㄧ幇涓轟竴涓?/SPAN>HTML<a>鍏冪礌錛岀敤鏉ユ彁渚涗竴涓?/SPAN>URL錛屽綋鐢ㄦ埛鐐瑰嚮鏃訛紝瑙﹀彂欏甸潰涓竴涓壒瀹氱殑鐩戝惉鏂規硶銆?BR> 鍦ㄥ疄鐜板垎欏甸〉闈㈣煩杞殑鍥涗釜緇勪歡閲岋紝閮藉0鏄庝負鍚屼竴涓?/SPAN>listener鐩戝惉鏂規硶銆傝鐪嬬浉搴?/SPAN>java涓殑瀵瑰簲鐩戝惉鏂規硶changePage鐨勪唬鐮侊細
public void changePage(IRequestCycle cycle) {
//Tapestry4.0宸茬粡deprecated浜哻ycle.getListenerParameters()
Object[] parameters = cycle.getServiceParameters();
//鑾峰彇褰撳墠欏電爜
Integer ig1 = (Integer) parameters[0];
int i1 = ig1.intValue();
setPageNo(i1);
//鑾峰彇姣忛〉鏈澶ф樉紺烘暟鐩?nbsp;
Integer ig2 = (Integer) parameters[1];
int i2 = ig2.intValue();
setMaxResult(i2);
}
瀵逛簬DirectLink錛宲arameters鍙傛暟鐨勮祴鍊兼柟寮忎簬ExternalLink涓鏍楓傝繖閲岃幏鍙栫殑鏄竴涓暟緇勶紝榪欎釜鏁扮粍鍖呭惈浜嗕袱鏍蜂俊鎭細鍗沖皢璺寵漿鐨勯〉鐮佹暟錛屼互鍙婂嵆灝嗚煩杞殑欏甸潰鏄劇ず澶氬皯鏉℃暟鎹?BR> 鍦ㄥ墠闈紝鎴戜滑鎻愬埌榪囷紝欏甸潰鐨刯ava鏂囦歡鍦ㄥ畬鎴愰〉闈㈣〃鐜版墍闇鏁版嵁鐨勫鐞嗗悗錛屽簲璇ュ皢鍏舵墍鏈夋垚鍛樺彉閲忥紙欏甸潰property錛夎繕鍘熶負鍒濆鍊箋傛墍浠ワ紝鈥滃綋鍓嶉〉鐮佲濅互鍙娾滄瘡欏墊渶澶ф樉紺烘暟鎹濊繖涓や釜鏁版嵁錛屾垜浠皢瀹冧滑鈥滀繚瀛樷濆湪欏甸潰涓娿傚綋鐐瑰嚮瑙﹀彂鐩戝惉鏂規硶鍚庯紝鍐嶇敱欏甸潰鏉ユ彁渚涗笅涓涓〉闈㈢殑鈥滈〉鐮佲濆拰鈥滄瘡欏墊渶澶ф樉紺烘暟鐩濄傜劧鍚庡啀鏌ヨ鏂扮殑maxResult鏉℃暟鎹?
榪愯鏁堟灉鍥懼涓嬶細
ExternalLink緇勪歡
ExternalLink緇勪歡浣跨敤鐨勬槸Tapestry鐨?/FONT>9縐?/FONT>service涓殑external service銆傝緇勪歡浣跨敤External Service 鍒涘緩緇ф壙浜?/FONT>IExternalPage鎺ュ彛鐨勪竴涓摼鎺ャ備笅闈㈢敤涓涓緥瀛愯鏄庡畠鐨勭敤娉曘?BR><a jwcid="@ExternalLink" page="SuccessPage" parameters='ognl:new java.lang.Object[]{"This is Success Page!", item.id}'disabled="ognl:item.Isable"></a>
page="SuccessPage"榪欎釜鍙傛暟鐨勪綔鐢紝灝辨槸鎸囧畾浜嗗皢瑕佽煩杞殑欏甸潰鍚嶇О錛?/FONT>ExternalLink緇勪歡鐨?/FONT>page鍙傛暟鏍規嵁閰嶇疆鏂囦歡tapestry.application鏂囦歡涓殑閰嶇疆鎵懼埌瀵瑰簲鐨?/FONT>page鏂囦歡錛?
<page name="SuccessPage" specification-path="/WEBINF/SuccessPage.page"/>
鐒跺悗鍦?/FONT>SuccessPage.page鏂囦歡涓紝鏍規嵁錛?
<page-specification class="com.ce.tapestry.Success">
鎵懼埌瀵瑰簲鐨?/FONT>Success.java鏂囦歡銆傚湪Success.java鏂囦歡涓紝鎴戜滑鍙戠幇璇ョ被緇ф壙浜?/FONT>IExternalPage鎺ュ彛錛?BR>public abstract class Success implements IExternalPage
浠ュ強瀹炵幇浜?/FONT>activateExternalPage(Object[]錛?/FONT>IRequestCycle)鏂規硶銆?
瀵逛簬ExternalLink緇勪歡錛屽畠蹇呴』緇ф壙IExternalPage鎺ュ彛錛屽茍瀹炵幇public void activateExternalPage(Object[] parameters,IRequestCycle cycle)鏂規硶銆傝鏂規硶鐨勫弬鏁?/FONT>Object[]鏉ヨ嚜璇ョ粍浠剁殑parameters鍙傛暟鐨勫箋?disabled鍙傛暟榛樿涓?/FONT>false錛屽綋涓?/FONT>true鏃訛紝涓嶈兘琚滅偣鍑燴濄?BR>
GenericLink緇勪歡
緇勪歡GenericLink閫氬父鐢ㄤ簬璺寵漿鍒板簲鐢ㄧ▼搴忚寖鍥翠互澶栫殑閾炬帴銆?/FONT> 铏界劧GenericLink鍙互鐢ㄥ叾浠栫粍浠朵篃鑳藉畬鎴愶紝浣嗘槸GenericLink鏇寸伒媧伙細瀹冨彲浠ヨ緗負disabled錛岃薄DirectLink鎴栬?/FONT>ActionLink涓鏍蜂篃鑳藉寘鍚?/FONT>Rollover緇勪歡銆?BR>浣跨敤鏂規硶濡備笅錛?BR><a jwcid="@GenericLink" href="ognl:item.homepage" disabled="false"/>
Href鍙傛暟錛氬叾浣滅敤寰堟槑鏄撅紝灝辨槸鎻愪緵涓涓摼鎺ュ湴鍧銆備粠涓婁緥鍙煡錛氫粠item.homepage鍙栧嚭鍦板潃銆?BR>disabled鍙傛暟錛氳鍙傛暟榛樿涓?/FONT>false錛屽綋涓?/FONT>true鏃訛紝涓嶈兘琚滅偣鍑燴濄傚叧浜?/FONT>disabled鍙傛暟錛屾墍鏈?/FONT>link綾葷粍浠墮兘鏈夛紝浣滅敤鍧囩浉鍚屻?
PageLink緇勪歡
PageLink緇勪歡闈炲父綆鍗曪紝鍙渶瑕佸湪page鍙傛暟涓寚鏄庨渶瑕佽煩杞埌涓嬩竴涓〉闈㈢殑鍚嶅瓧銆傜浉褰撲簬涓嶅甫鍙傛暟鐨?/FONT>ExternalLink銆備笉榪囬渶瑕佹敞鎰忕殑鏄紝PageLink鍜?/FONT>ExternalLink浣跨敤鐨勪笉鏄悓涓涓?/FONT>service錛?/FONT>璇ョ粍浠朵嬌鐢ㄤ簡Page Service鍒涘緩浜嗗彟澶栦竴涓摼鎺?/FONT>URL銆?/FONT>
浣跨敤鏂規硶璇瘋渚嬪瓙錛?BR><a jwcid="@PageLink" page="Infos"><img src="images/lyb.gif" width="50" height="18" border="0">
</a>
璺寵漿鍒頒互涓嬬殑URL錛?/FONT>http://localhost:8080/hello/helloworld?service=page/Upload
ServiceLink緇勪歡
鍒涘緩浠繪剰涓嶅甫鏈夊弬鏁扮殑寮曟搸鏈嶅姟錛?/FONT>ServiceLink緇勪歡鐢ㄦ硶涓?/FONT>ActionLink錛?/FONT>PageLink鍜?/FONT>DirectLink絳夌粍浠剁浉浼鹼紝浣嗗父甯鎬笌鍏蜂綋鐨勫簲鐢ㄦ湇鍔′竴璧蜂嬌鐢ㄣ?/FONT>Service鍙傛暟鏄璋冪敤鐨?/FONT>EngineService瀵硅薄鐨勫悕縐般傦紙Body錛?/FONT>
浠ヤ笂鐨?/FONT>Link綾葷粍浠訛紝閮介渶瑕佸湪Body緇勪歡鑼冨洿鍐呬嬌鐢ㄣ?/FONT>