锘??xml version="1.0" encoding="utf-8" standalone="yes"?>四虎亚洲国产成人久久精品,亚洲成AV人片在线观看,国产亚洲国产bv网站在线 http://www.tkk7.com/usherlight/category/38735.html澶╁鉤灞變笂鐧戒簯娉夛紝浜戣嚜鏃犲績姘磋嚜闂層備綍蹇呭鍐插北涓嬪幓錛屾洿娣繪嘗嫻悜浜洪棿錛?/description>zh-cn Tue, 29 Mar 2011 08:15:20 GMT Tue, 29 Mar 2011 08:15:20 GMT 60 Tapestry5 in action錛坢anning)鐨勭涓绔犲厤璐歸槄璇?/title> http://www.tkk7.com/usherlight/archive/2011/03/29/347159.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Mon, 28 Mar 2011 21:53:00 GMT http://www.tkk7.com/usherlight/archive/2011/03/29/347159.html http://www.tkk7.com/usherlight/comments/347159.html http://www.tkk7.com/usherlight/archive/2011/03/29/347159.html#Feedback 0 http://www.tkk7.com/usherlight/comments/commentRss/347159.html http://www.tkk7.com/usherlight/services/trackbacks/347159.html
Tapestry5 in action鐜板湪榪樺彧鏄彁渚汳EAP褰㈠紡鐨勮璐紝MEAP-Manning Early Access Program, 涔熷氨鏄彁鍓嶈瘯闃呯殑鎰忔濓紝濡傛灉璇昏呰璐簡姝ょ増鏈紝閭d箞manning浼氬湪浣滆呮瘡瀹屾垚涓绔犲悗錛屽皢璇ョ珷鑺傚彂緇欒璐咃紝璁㈣喘鑰呭彲浠ユ彁浜よ嚜宸辯殑鍙嶉錛宮anning浼氭牴鎹儏鍐靛彂甯冪浉搴旂殑閿欒淇敼淇℃伅銆?/div>
鐩墠姝や功鐨勭涓绔犲彲浠ュ厤璐逛笅杞斤細
http://www.tkk7.com/Files/usherlight/Tapestry5%20in%20action%20MEAP%20ch01.zip
]]> Tapestry鐨勪竴浜涙渶鏂板姩鎬?/title> http://www.tkk7.com/usherlight/archive/2010/11/24/338872.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Tue, 23 Nov 2010 22:08:00 GMT http://www.tkk7.com/usherlight/archive/2010/11/24/338872.html http://www.tkk7.com/usherlight/comments/338872.html http://www.tkk7.com/usherlight/archive/2010/11/24/338872.html#Feedback 3 http://www.tkk7.com/usherlight/comments/commentRss/338872.html http://www.tkk7.com/usherlight/services/trackbacks/338872.html
1銆乀apestry5.2.4鐨勫彂甯冿紝Tapestry5.2.3鐗堟湰鍦ㄥ唴閮ㄦ姇紲ㄤ腑琚惁鍐籌紙涓昏鏄洜涓轟嬌鐢╩aven蹇熷垱寤虹殑鍘熷瀷鏈夐棶棰橈級錛屾墍浠ュ湪琚惁鍐崇殑3澶╁悗渚垮彂甯冧簡5.2.4,鐩稿5.2.2鏉ヨ錛屽彉鍔ㄥ茍涓嶅ぇ錛屽彧鏈?涓敊璇慨澶嶅拰5涓姛鑳芥敼榪涖備絾鏄嚦灝戣鏄嶵apestry鐨勯」鐩繕鍦ㄩ『鍒╃殑榪涜涓?br />
2銆乀apestry涓婚〉鐨勫叏鏂版敼鐗堛備富瑕佹槸瀹屽杽浜嗘枃妗c傝繖涓鐐規槸闈炲父閲嶈鐨勶紝Tapestry欏圭洰緇勭殑鎴愬憳涔熸壙璁apestry鍦ㄦ帹閿鑷繁鎴栬呮槸鍦ㄥ競鍦烘帹騫挎柟闈㈠仛寰楅潪甯稿け璐?very bad in marketing)錛屾墍浠ユ渶榪戜篃閲囧彇浜嗕竴浜涙帾鏂芥潵榪涜鏀瑰彉錛屾瘮濡傦紝棰勮鏄庡勾浼氬彂琛孴apestry5 in action涓涔︾瓑絳夈?br />
3銆佽繕鏈変竴浠朵簨闇瑕佹彁鍙婄殑鏄細appfuse鐨勪綔鑰呮渶榪戝web妗嗘灦榪涜浜嗕竴鐣姣攈ttp://raibledesigns.com/rd/entry/my_comparing_jvm_web_frameworks錛孴apestry鍦?3涓鏋朵腑鍚嶅垪絎?錛屽垰濂芥槸涓棿鐨勪綅緗俆apestry欏圭洰鐨勬垚鍛橀鏈変笉婊★紝璁や負浣滆匨att Raible瀵筎apestry涓嶅浜嗚В錛屾湁璇瑙備紬涔嬪珜銆俆apestry欏圭洰鎴愬憳Igor E. Poteryaev璁や負Matt鍦?璁よ瘑搴︼紝寮鍙戞晥鐜囷紝欏圭洰鍋ュ悍搴︼紝嫻嬭瘯鍙嬪ソ鎬э紝scalability絳夋柟闈弗閲嶄綆浼頒簡Tapestry鐨勮兘鍔涖?br /> ]]> Tapestry5.2.2(Beta Release)鍙戝竷浜?/title> http://www.tkk7.com/usherlight/archive/2010/11/02/336747.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Mon, 01 Nov 2010 23:58:00 GMT http://www.tkk7.com/usherlight/archive/2010/11/02/336747.html http://www.tkk7.com/usherlight/comments/336747.html http://www.tkk7.com/usherlight/archive/2010/11/02/336747.html#Feedback 0 http://www.tkk7.com/usherlight/comments/commentRss/336747.html http://www.tkk7.com/usherlight/services/trackbacks/336747.html
榪欎富瑕佹槸渚夸簬ajax鐨勪嬌鐢ㄣ?br />
Bug
* Element.forceAttribute uses the element's namespace to match the attribute.
* Element.attribute(String name, String value) adds elements that already exist
* Element#addClassName can create an additional new 'class' attribute
* Properties defined in an Interface are not exposed by PropertyAccess for abstract classes that do not directly implement the methods
* Some services require a notification that they have been reloaded, so they can clean up external dependencies
* Whitespaces in SymbolConstants.SUPPORTED_LOCALES cause that locales are not persised
* Validation macros do not work when used in @Validate annotation
* Client-side validation of @Pattern is broken
* Linking a Form to a Zone will no longer work unless the Form contains validated fields
* When using PropertyShadowBuilder to build a service, if the property is null, an immediate exception is needed (rather than a NullPointerException)
* When using a MultiZoneUpdate, Tapestry will clear the referenced zone
Improvement
* Add the facility to optionally disable on-focus-change triggered validation while retaining the on-form-submit validation
* Form component should be able to render a secure URL even on an insecure page
* New annotations @Decorate and @Advise to identify methods that decorate or annotate services
* Extend Link with new methods for producing absolute URLs (that include scheme, hostname, etc.)
* Simplify connecting a link or form to an (enclosing) Zone
* BeanBlockContribution should be split into two sub-classes: EditBlockContribution and DisplayBlockContribution
* Define a special CSS class to prevent a client-side form from submitting normally (for Ajax use cases)
* Additional method for Link: addParameterValue(String,Object) that uses ContextPathEncoder to encode object value to a string
* SeleniumTestCase should expose the underlying CommandProcessor, to allow execution of commands not defined by the Selenium interface
* Allow individual SeleniumTestCases to run w/o configuring SeleniumLauncher
]]> Tapestry5.2.1 Beta宸茬粡鍙戝竷 http://www.tkk7.com/usherlight/archive/2010/10/20/335644.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Tue, 19 Oct 2010 23:38:00 GMT http://www.tkk7.com/usherlight/archive/2010/10/20/335644.html http://www.tkk7.com/usherlight/comments/335644.html http://www.tkk7.com/usherlight/archive/2010/10/20/335644.html#Feedback 0 http://www.tkk7.com/usherlight/comments/commentRss/335644.html http://www.tkk7.com/usherlight/services/trackbacks/335644.html 浠婂ぉ鍦ㄧ綉涓婅漿浜嗚漿錛屽彂鐜癟apestry鍙堟湁浜嗘柊鍔ㄤ綔銆?br />
1銆佷粠5.2.0alpha鐗?鏈?1鏃ュ彂甯冨埌鐜板湪錛岀粓浜庡彂甯?.2.1Beta鐗堜簡銆傝繖涓増鏈富瑕佹槸淇敼alpha鐗堟湰涓殑bug.
5.2鐩稿浜?.1榪涜浜嗚澶氶噸澶х殑鏀硅繘錛岃緇嗗唴瀹瑰彲瑙侊細Tapestry5.2鐨勬柊鍙樺寲
2銆佹嵁縐板湪5.3鐗堜腑灝嗗紩鍏ュぇ閲忕殑鏂板姛鑳斤紝鍏蜂綋鍐呭涓嶈銆?br />
3銆佷互寰鏈浠や漢璇熺梾鐨勬枃妗i棶棰橈紝鐩墠寮鍙戝皬緇勪篃鍦ㄥ姫鍔涜В鍐熾?br />
棣栧厛錛屽緩绔嬩簡鏂扮殑鏂囨。緗戦〉錛歨ttp://people.apache.org/~uli/tapestry-site/錛屼笉榪囩洰鍓嶈繖涓綉绔欒繕娌℃湁瀹屽叏瀹屾垚錛屽彧鑳界畻鏄瑙堢増錛屼絾鏄繖姣曠珶鏄湪姝g‘鐨勯亾璺笂鍓嶈繘銆?br />
鍏舵錛孴apestry 5 in action涓涔︽鍦ㄥ啓浣滀腑錛屽凡緇忓畬鎴?0%錛岄璁℃槑騫翠竴瀛e害鑳藉鍑虹増銆?br />
鎴戠浉淇★紝闅忕潃鍔熻兘鐨勪笉鏂畬鍠勫拰琛ュ厖錛屽啀鍔犱笂鏂囨。鐨勯愭笎鍏呭疄錛孴apestry瀹屽叏鏈夌悊鐢辮兘鍚稿紩鏇村鐨勫紑鍙戣呮潵鍏蟲敞鍜屼嬌鐢ㄣ?/p> ]]> Tapestry5.2鐨勬柊鍙樺寲 http://www.tkk7.com/usherlight/archive/2010/08/18/329170.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Tue, 17 Aug 2010 23:13:00 GMT http://www.tkk7.com/usherlight/archive/2010/08/18/329170.html http://www.tkk7.com/usherlight/comments/329170.html http://www.tkk7.com/usherlight/archive/2010/08/18/329170.html#Feedback 0 http://www.tkk7.com/usherlight/comments/commentRss/329170.html http://www.tkk7.com/usherlight/services/trackbacks/329170.html
1銆佸寮轟簡class reload鐨勫姛鑳斤紙鎴戜釜浜轟篃璁や負榪欎竴鐐規槸5.2鐗堟湰鏈浠や漢嬋鍔ㄧ殑鏀硅繘錛夛紝浠ュ墠Tapestry鍜屽叾浠栫殑web妗嗘灦綾諱技錛屼慨鏀歸〉闈笉闇瑕侀噸鏂板惎鍔╝pplication server, 浣嗘槸淇敼浜嗙被涔嬪悗錛屽繀欏婚噸鏂板惎鍔ㄥ簲鐢ㄦ湇鍔″櫒鎵嶈銆備絾鏄湪Tapestry5.2涓紝瀵硅繖涓鐐硅繘琛屼簡淇敼錛屽鏋滃彧鏀瑰彉浜嗘帴鍙g殑瀹炵幇綾伙紝鑰屼笉鏀瑰彉鎺ュ彛鐨勬柟娉曠鍚嶏紝灝變笉闇瑕侀噸鏂板惎鍔ㄥ簲鐢ㄦ湇鍔″櫒
2銆佹柊澧炰簡鑻ュ共涓粍浠訛紝姣斿錛欵rror鍜孴rigger銆?br />
Error鍜屽師鏈夌殑Errors綾諱技錛屼絾鏄疎rror鐢ㄤ簬緇欐寚瀹氱殑緇勪歡鏄劇ず楠岃瘉閿欒淇℃伅銆?br />
Trigger鎻愪緵浜嗗湪娉繪煋欏甸潰榪囩▼涓Е鍙戜換鍔′簨浠剁殑鍔熻兘錛屽父甯哥敤浜庨氳繃RenderSupport鏉ョ粰欏甸潰娣誨姞JavaScript浠g爜
3銆佹柊鐨勬彃浠?Mixin),鍖呮嫭RenderClientId, RenderNotification
4銆侀泦鎴愪簡JSR-303 Bean鐨勯獙璇侊紝鐜板湪鍙互鍦ㄩ〉闈腑浣跨敤JSR-303鏍囧噯鐨勬敞瑙f潵緇欏瓧孌墊寚瀹氶渶瑕佺殑楠岃瘉
5銆佹柊鐨勬敞瑙o紝鍖呮嫭@Contribute,@RequestParameter, @ActivationRequestParameter, 浣跨敤鍚庝袱涓敞瑙h兘寰堝鏄撳湴鑾峰彇request涓殑鍙傛暟
6銆佹柊鐨勯〉闈㈢敓鍛藉懆鏈熶簨浠訛細pageReset
7銆侀摼鎺ヤ慨楗拌繃紼嬩腑鐨勬柊浜嬩歡: decoratePageRenderLink, decoreateComponentEventLink
8銆侀〉闈㈣В鏋愬櫒鐨勬洿鎹紝鍘熸潵浣跨敤StAX錛岄犳垚浜嗗Google App Engine鍜屽OSGI鐨勪笉鍏煎錛?.2鐗堟湰涓嬌鐢ㄤ簡鏍囧噯鐨凷AX瑙f瀽鍣?br />
9銆侀〉闈㈢紦鍐叉睜鐨勫簾闄わ紙鎴戣涓鴻繖鏄?.2鐗堟湰鐨勪竴涓浉褰撳ぇ鑰屼笖涔熸槸闈炲父閲嶈鐨勪竴涓彉鍖栵紝鎴戣涓洪〉闈㈢紦鍐叉睜鎶鏈槸tapestry瀛︿範鏇茬嚎闄″抄鐨勪竴涓噸瑕佸師鍥狅級錛?.2鐗堟湰涓墍鏈夐〉闈㈠皢鍙湁涓涓疄渚嬶紙涔熷氨鏄痩ewis howard璇寸殑鍗曚緥鍖栵級錛岄〉闈㈠睘鎬х殑鍊煎皢浼氬湪姣忎釜綰跨▼涓嬌鐢ㄤ竴涓狹ap鏉ヤ繚瀛樸傝繖鏍蜂竴涓〉闈㈠疄渚嬪彲浠ュ湪澶氫釜綰跨▼涓嬌鐢紝鑰屼笉浼氭湁鍚屾闂銆?br />
浣嗘槸錛岀敱浜庤繖鏄竴涓柊鐨勫皾璇曪紝鎵浠ewis涔熶笉紜畾榪欐牱鍋氱殑鏁堟灉鏄惁寰堝ソ錛堣瑙侊細http://tapestryjava.blogspot.com/2010/07/everyone-out-of-pool-tapestry-goes.html錛夋墍浠ワ紝鍦?.2涓彲浠ラ氳繃閰嶇疆鎭㈠欏甸潰緙撳啿姹犵殑浣跨敤銆?img src ="http://www.tkk7.com/usherlight/aggbug/329170.html" width = "1" height = "1" /> ]]> prototype鐗堢殑table filter http://www.tkk7.com/usherlight/archive/2010/07/28/327294.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Wed, 28 Jul 2010 03:02:00 GMT http://www.tkk7.com/usherlight/archive/2010/07/28/327294.html http://www.tkk7.com/usherlight/comments/327294.html http://www.tkk7.com/usherlight/archive/2010/07/28/327294.html#Feedback 1 http://www.tkk7.com/usherlight/comments/commentRss/327294.html http://www.tkk7.com/usherlight/services/trackbacks/327294.html jquery鏈変竴涓緢鏂逛究鐨勬彃浠禪I Table Filter鍙互鏍規嵁杈撳叆鐨勫唴瀹歸殣钘忔樉紺鴻〃鏍間腑鐩稿簲鐨勬暟鎹銆?br />
鍥犱負鐩墠浣跨敤鐨則apestry鎹嗙粦鐨勬槸prototype錛屾墍浠ュ氨鑷繁鍐欎簡涓涓被浼肩殑鎻掍歡銆?/p>
<html>
<head>
<script src="prototype-1.6.0.2.js" type="text/javascript"></script>
<script language="javaScript">
Event.observe(window, 'load', function() {
Event.observe('filter', 'keyup', filterTable);
});
function filterTable() {
var filterCaseElement = document.getElementById('filterCase');
var caseSensitive = filterCaseElement.checked;
$$('tr').each(function(trElement, ind) {
var val = $('filter').value;
if ( ! caseSensitive ) {
val = val.toLowerCase();
}
trElement.childElements().each(function(tdElememt) {
var tdText = tdElement.innerText;
if ( ! caseSensitive ) {
tdText = tdText.toLowerCase();
}
if (tdText.include(val)) {
trElement.show();
} else if ( ind > 0 ) {
trElement.hide();
}
});
});
}
</script>
</head>
<body>
filter: <input type="text" id="filter" name="filter"/> <input type="checkbox" id="filterCase" onchange="javaScript:filterTable();"/> Case-Sensitive
<table border="1">
<thead>
<tr>
<th>name</th>
<th>column1</th>
<th>column2</th>
<th>column3</th>
<th>column4</th>
<th>column5</th>
<th>column6</th>
</tr>
</thead>
<tr>
<td>TEST</td>
<td>00150002331</td>
<td>238156</td>
<td>075</td>
<td>001</td>
<td>172.16.14.20</td>
<td>1-1-05</td>
</tr>
<tr>
<td>TEST-2</td>
<td>00150002332</td>
<td>238157</td>
<td>075</td>
<td>002</td>
<td>172.16.14.21</td>
<td>1-1-05</td>
</tr>
<tr>
<td>TEST</td>
<td>00150002333</td>
<td>238158</td>
<td>075</td>
<td>003</td>
<td>172.16.14.23</td>
<td>1-1-05</td>
</tr>
<tr>
<td>TEST</td>
<td>00150002341</td>
<td>238159</td>
<td>075</td>
<td>004</td>
<td>172.16.14.24</td>
<td>1-1-05</td>
</tr>
<tr>
<td>TEST</td>
<td>00150002339</td>
<td>238186</td>
<td>075</td>
<td>006</td>
<td>172.16.14.26</td>
<td>1-1-06</td>
</tr>
</table>
</body>
</html>
濡傛灉欏甸潰涓涓〃鏍鹼紝鑰屽彧闇瑕佸鍏朵腑鐨勪竴涓〃鏍肩殑鏁版嵁榪涜榪囨護鐨勮瘽錛岀畝鍗曞湴鎶婂叾涓細$$('tr').each(function(ele, index) 鏀規垚 $$('#tableId, tr').each(function(ele, index) 灝辮浜嗭紝鍏朵腑鐨則ableId灝辨槸琛ㄦ牸鐨刬d ]]> Tapestry5.2鐨刟lpha鐗堟湰宸茬粡鍙戝竷 http://www.tkk7.com/usherlight/archive/2010/07/15/326156.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Thu, 15 Jul 2010 00:20:00 GMT http://www.tkk7.com/usherlight/archive/2010/07/15/326156.html http://www.tkk7.com/usherlight/comments/326156.html http://www.tkk7.com/usherlight/archive/2010/07/15/326156.html#Feedback 2 http://www.tkk7.com/usherlight/comments/commentRss/326156.html http://www.tkk7.com/usherlight/services/trackbacks/326156.html
鍦?.2涓繕鏄柊澧炰簡涓嶅皯浠や漢嬋鍔ㄧ殑鍔熻兘
1銆丵ueryParameterMapped娉ㄨВ錛屼嬌鐢ㄨ繖涓敞瑙e彲浠ュ緢鏂逛究鍦版妸request涓殑鍙傛暟鏄犲皠鍒癰ean閲岀殑灞炴?br />
2銆侊紙榪欐槸鏈璁╂垜鏈熷緟鐨勫姛鑳斤級鏈嶅姟緇堜簬鑳藉鍔ㄦ佸姞杞戒簡錛?br />
3銆佸湪浜嬩歡澶勭悊鏂規硶涓彲浠ヤ嬌鐢≦ueryParameter鏉ユ敞瑙e弬鏁?br />
4銆乻ubmit緇勪歡鐜板湪鍙互cancel琛ㄥ崟閲岀殑鏁版嵁浜?br />
5銆佷笉鍐嶄嬌鐢⊿tAX浣滀負tml鐨勮В鏋愬櫒浜嗭紝鑰屾槸閲囩敤鏍囧噯鐨凷AX瑙f瀽鍣紝榪欐牱鍑忓皯澶栫晫寮曠敤錛岃屼笖鍏煎鎬ф洿濂?br />
6銆佺粍浠朵腑涔熷彲浠ヤ嬌鐢⊿essionAttribute鏉ヨ幏寰梥ession涓殑鏁版嵁浜嗭紝浠ュ墠濂藉儚鍙湁鍦╬age涓墠鑳界敤
7銆佸紩鍏ヤ簡JSR-303 Bean Validation Integration Library. ]]> tapestry5.2 beta鐗堝凡緇忓畬鎴?/title> http://www.tkk7.com/usherlight/archive/2010/06/03/322593.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Thu, 03 Jun 2010 02:31:00 GMT http://www.tkk7.com/usherlight/archive/2010/06/03/322593.html http://www.tkk7.com/usherlight/comments/322593.html http://www.tkk7.com/usherlight/archive/2010/06/03/322593.html#Feedback 1 http://www.tkk7.com/usherlight/comments/commentRss/322593.html http://www.tkk7.com/usherlight/services/trackbacks/322593.html
浣滆呯浉淇a鐗堟湰灝嗕細鍦ㄤ笉涔呯殑鏈潵鍙戝竷銆?br />
鎵浣滆呴忛湶錛屽湪鏂扮増鏈腑浼氬鍔犱竴涓柊鐨勭粍浠訛細dynamic.
榪欎釜緇勪歡鐨勭敤閫旀槸鏇存崲鐨偆銆傚湪鏃х増鏈殑tapestry涓紝鐢變簬tapestry鐨勬ā鏉挎槸涓鑷寸殑錛屾墍浠ヨ瀹炵幇鎹㈣偆鐩稿綋鍥伴毦銆?br />
浣嗗湪鏂扮増鏈腑鐨勮繖涓粍浠舵瘮杈冨畬緹庡湴瑙e喅浜嗚繖涓棶棰樸?br />
浣滆呰嚜鎴戣瘎浠瘋繖涓粍浠舵槸浠や漢嬋鍔ㄧ殑涓涓柊浜嬬墿銆?br />
]]> 瀹岀編鏄紭縐鐨勬晫浜篢he Perfect Is The Enemy Of The Good http://www.tkk7.com/usherlight/archive/2010/03/19/315858.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Thu, 18 Mar 2010 23:40:00 GMT http://www.tkk7.com/usherlight/archive/2010/03/19/315858.html http://www.tkk7.com/usherlight/comments/315858.html http://www.tkk7.com/usherlight/archive/2010/03/19/315858.html#Feedback 0 http://www.tkk7.com/usherlight/comments/commentRss/315858.html http://www.tkk7.com/usherlight/services/trackbacks/315858.html 鍑鴻嚜浼忓皵娉扮殑鍚嶅彞銆傚湪璁稿浼樼鐨勭▼搴忓憳鐨勭紪紼嬩範鎯腑錛屽鎵捐В鍐蟲柟妗堝氨濡傚悓鏄鎵懼コ鍙嬩竴鑸紝鎬繪槸鍔涙眰瀹岀編錛屽鏋滀竴涓В鍐蟲柟妗堜笉澶熷畬緹庣殑璇濓紝閭d箞瀹佸彲鑸嶅純涔熶笉浼氶檷浣庢爣鍑嗚岄噰鐢ㄣ備絾鏄繖鏍風殑緇撴灉寰堟湁鍙兘浼氭槸涓鍙墮殰鐩紝涓嶈媯灄銆?br />
涓句釜瀹為檯鐨勪緥瀛愭潵璇達紝tapestry5鐨勬湇鍔″姩鎬佸姞杞藉氨鏄竴涓吀鍨嬨?br />
澶у鐭ラ亾錛屽湪Tapestry涓紝欏甸潰妯℃澘鐨勫姩鎬佸姞杞戒竴鐩存槸鍏剁殑涓涓浼犵偣銆備篃灝辨槸璇達紝欏甸潰妯℃澘濡傛灉淇敼浜嗭紝涓嶉渶瑕侀噸鏂板惎鍔ㄥ簲鐢ㄦ湇鍔″櫒錛屼慨鏀瑰嵆鏃剁敓鏁堛備絾鏄紝Tapestry鍗翠竴鐩存病鏈夊疄鐜版湇鍔$殑鍔ㄦ佸姞杞斤紝涔熷氨鏄鏈嶅姟鐨勭被淇敼浜嗭紝灝卞繀欏婚噸鏂板惎鍔ㄦ湇鍔″櫒銆備負浠涔堝憿錛屽洜涓鴻拷姹傚畬緹庛?br />
鍏跺疄寰堜箙浠ュ墠鍦═apestry鐨勪綔鑰呯殑澶磋剳涓紝鍖呮嫭璁稿鐨勭敤鎴烽兘鎯沖湪Tapestry涓姞鍏ユ湇鍔″姩鎬佸姞杞界殑鍔熻兘錛屼絾鏄渶鍚庝綔鑰呭嵈鏀懼純浜嗐傚師鍥犳槸鍥犱負錛屽湪Tapestry鐨勬灦鏋勪腑錛屾湇鍔℃瘮欏甸潰瑕佸鏉傜殑澶氾紝鏈嶅姟涓嶆槸鍗曠嫭瀛樺湪鐨勶紝浠栦細琚獻nject鍒拌澶氬叾浠栫殑鏈嶅姟錛岃岃繖浜涙湇鍔″張浼氳inject鍒板叾浠栫殑鏈嶅姟涓紝鏈鍚庡鑷翠綘寰堥毦鐣屽畾鍝簺綾婚渶瑕佽閲嶆柊鍔犺澆銆?br />
浣嗘槸鏈榪戞湁涓涓漢鎻愬嚭涓涓緩璁紝涓轟粈涔堣瀹炵幇瀹屾暣鐨勫姩鎬佸姞杞藉憿銆傚叾瀹炲彧瀹炵幇鏈嶅姟鐨勫疄鐜扮被鐨勫姩鎬佸姞杞藉氨宸茬粡寰堝ソ浜嗐?br />
紜疄錛屽鏋滀繚鎸佹帴鍙d笉鍙橈紝鍙湪鎺ュ彛鍏蜂綋瀹炵幇淇敼鐨勬椂鍊欏姞杞斤紝紜疄澶уぇ綆鍖栦簡闂錛屽洜涓鴻繖鏍峰彉鍖栬寖鍥村氨琚檺瀹氬湪鍗曚釜綾諱箣鍐呬簡銆傝櫧鐒惰繖鏍峰茍涓嶅畬緹庯紝鍥犱負濡傛灉鏀瑰彉浜嗗澶栨帴鍙o紝姣斿錛屾坊鍔犱簡涓涓柊鐨勬柟娉曪紝鎴栬呮敼鍙樹簡鏂規硶鐨勭鍚嶏紝榪樻槸闇瑕侀噸鏂板惎鍔ㄦ湇鍔″櫒銆傚彲鏄繖鏍蜂篃宸茬粡鍦ㄥ緢澶х▼搴︿笂鎻愬崌浜嗙敤鎴風殑浣跨敤婊℃剰搴︺?br />
姝e鏈夊彞鍙よ鎵璇達細閫涓姝ユ搗闃斿ぉ絀恒備篃鍦ㄦ鎻愰啋鑷繁鍦ㄤ互鍚庣殑寮鍙戣繃紼嬩腑錛屽敖閲忔嫇灞曡嚜宸辯殑鎬濈淮錛屼笉瑕佷竴涓嬪瓙閽誨埌鐗涜灝栭噷銆?br />
]]>Tapestry 鏈鏂扮増5.1.0.5鏁欑▼錛堝崄浜岋級錛氳嚜瀹氫箟鍓嶇紑prefix http://www.tkk7.com/usherlight/archive/2010/03/06/314700.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Sat, 06 Mar 2010 07:54:00 GMT http://www.tkk7.com/usherlight/archive/2010/03/06/314700.html http://www.tkk7.com/usherlight/comments/314700.html http://www.tkk7.com/usherlight/archive/2010/03/06/314700.html#Feedback 0 http://www.tkk7.com/usherlight/comments/commentRss/314700.html http://www.tkk7.com/usherlight/services/trackbacks/314700.html 鍦ㄦ暀紼嬬殑絎洓閮ㄥ垎錛坔ttp://www.tkk7.com/usherlight/archive/2009/06/20/283396.html錛夋垜浠凡緇忕矖鐣ュ湴浠嬬粛浜員apestry鐨勫墠緙錛屽叾涓彁鍙婃渶甯哥敤鐨勪袱縐峫iteral鍜宲rop銆傝繖閲岄『渚垮啀浠嬬粛涓涓嬪叾浠栫殑鍑犱釜鍓嶇紑.
1銆乧ontext錛岃繖涓粡甯稿湪寮曠敤鍥劇墖鐨勬椂鍊欑敤鍒般傛瘮濡傦細<img src="${context:images/icon.png}"/> 榪欐牱灝辮兘澶熷湪欏甸潰涓婃樉紺哄湪web-inf/images/icon.png
2銆乵essage錛岃繖涓槸闇瑕両18N鐨勫簲鐢ㄥ繀鐢ㄧ殑鍓嶇紑銆?{message:some-key}
3銆乿ar錛岀敤浜庡畾涔夌敓鎴愪竴涓復鏃跺彉閲忋傛瘮濡傦細<li t:type="loop" source="1..10" value="var:index">${var:index}</li>銆傚鏋滄病鏈夊姞榪欎釜鍓嶇紑var:鐨勮瘽錛屽氨闇瑕佸湪欏甸潰綾諱腑娣誨姞涓涓猵roperty錛?index浠ュ強鐩稿簲鐨刧etter鍜宻etter銆?br />
鎴戜滑榪欐浠嬬粛鑷畾涔変竴涓猚ycle鍓嶇紑錛岃繖涓彲浠ョ敤浜庡湪琛ㄦ牸涓樉紺轟笉鍚岃儗鏅殑琛岋紙涔熷氨鏄枒椹潯錛夈?br />
姣斿錛?br />
<t:grid .... rowClass="cycle:line1,line2">
...
</t:grid>
鎴栬?br />
<t:loop ...>
<div class="${cycle:line1,line2}">aaaa</div>
</tloop>
鑷畾涔塸refix涓鑸潵璇存槸3涓楠わ紝
1銆佸畾涔変竴涓狟indingFactory錛岃繖涓渶瑕佸疄鐜癇indingFactory鎺ュ彛
2銆佸畾涔変竴涓狟inding緇ф壙AbstractBinding
3銆佹敞鍐岃繖涓狟inding
鐪嬩竴涓嬪叿浣撶殑prefix鐨勭被錛?/p>
1 import java.util.ArrayList;
2 import java.util.List;
3
4 import org.apache.tapestry5.Binding;
5 import org.apache.tapestry5.BindingConstants;
6 import org.apache.tapestry5.ComponentResources;
7 import org.apache.tapestry5.ioc.Location;
8 import org.apache.tapestry5.services.BindingFactory;
9 import org.apache.tapestry5.services.BindingSource;
10
11 /** */ /**
12 * Implementation of the cycle: binding prefix -- we parse list of bindings
13 * and generate delegate bindings for each element<br>
14 * default binding is literal, other bindings can be used by specifying prefix.<br>
15 * example: "cycle:prop:name,prop:lastName,sth,sth else"
16 */
17 public class CycleBindingFactory implements BindingFactory {
18 private final BindingSource _bindingSource;
19
20 public CycleBindingFactory(BindingSource source) {
21 this ._bindingSource = source;
22 }
23
24 public Binding newBinding(String description, ComponentResources container, ComponentResources component,
25 String expression, Location location)
26 {
27 List< Binding > delegates = new ArrayList < Binding > ();
28 String[] bindingNames = expression.split( " , " );
29
30 for (String bindingName : bindingNames) {
31 String defaultBinding = BindingConstants.LITERAL;
32
33 Binding binding = _bindingSource.newBinding(description, container, component, defaultBinding, bindingName, location);
34 delegates.add(binding);
35 }
36
37 CycleBinding cycleBinding = new CycleBinding(delegates);
38 container.addPageLifecycleListener(cycleBinding);
39
40 return cycleBinding;
41 }
42 }
1 import java.util.List;
2
3 import org.apache.tapestry5.Binding;
4 import org.apache.tapestry5.internal.bindings.AbstractBinding;
5 import org.apache.tapestry5.runtime.PageLifecycleListener;
6
7
8 public class CycleBinding extends AbstractBinding implements PageLifecycleListener {
9 private final List < Binding > delegates;
10 private int index = 0 ;
11
12 public CycleBinding(List < Binding > delegates) {
13 this .delegates = delegates;
14 }
15
16 public Object get() {
17 Object ret = delegates.get(index).get();
18 index ++ ;
19 if (index >= delegates.size()) index = 0 ;
20 return ret;
21 }
22
23 @Override
24 public boolean isInvariant() {
25 return false ;
26 }
27
28 @Override
29 public Class < Object > getBindingType() {
30 return Object. class ;
31 }
32
33
34 public void containingPageDidDetach() {
35 index= 0 ;
36 }
37
38 public void containingPageDidAttach() { /**/ /* not interested */ }
39
40 public void containingPageDidLoad() { /**/ /* not interested */ }
41 }
Binding鍜孊indingFactory鍐欏ソ浜嗭紝娉ㄥ唽鍚庡氨鍙互浣跨敤浜嗭紝娉ㄥ唽鐨勮繃紼嬫槸鍦ˋppModel涓坊鍔犱互涓嬩竴孌典唬鐮侊細
1 public static void contributeBindingSource(
2 MappedConfiguration< String, BindingFactory > configuration,
3 BindingSource bindingSource
4 )
5 {
6 configuration.add(" cycle " , new CycleBindingFactory(bindingSource));
7 }
]]> Tapestry 鏈鏂扮増5.1.0.5鏁欑▼錛堝崄涓錛夛細鑷畾涔夌粍浠禖heckBoxGroup http://www.tkk7.com/usherlight/archive/2010/02/12/312607.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Thu, 11 Feb 2010 23:26:00 GMT http://www.tkk7.com/usherlight/archive/2010/02/12/312607.html http://www.tkk7.com/usherlight/comments/312607.html http://www.tkk7.com/usherlight/archive/2010/02/12/312607.html#Feedback 3 http://www.tkk7.com/usherlight/comments/commentRss/312607.html http://www.tkk7.com/usherlight/services/trackbacks/312607.html
鏈枃灝辯敤涓涓疄渚嬫潵鐪嬩竴涓婽apestry涓槸濡備綍娣誨姞涓涓嚜瀹氫箟緇勪歡鐨勩?br />
Tapestry鐨勫唴緗粍浠跺彧鎻愪緵浜哻heckbox錛岃屼笖鍙兘榪斿洖涓涓猙oolean錛岀敤浜庤〃鏄庢槸鍚﹁閫変腑銆?br />
姣斿錛岃榪涜涓涓兢浼楀枩鐖辯殑姘存灉璋冩煡錛岄夐」鏈? 鑻規灉錛岃憽钀勶紝妗冨瓙錛岄钑?..錛屽氨闇瑕佸搴旀瘡涓夐」璁劇疆涓涓竷灝斿瀷鍙橀噺錛屾樉寰楁瘮杈冪箒鐞愩?br />
榪欓噷鎴戜滑灝嗘坊鍔犱竴涓粍浠剁敤浜庡皢涓緇刢heckbox闆嗕腑璧鋒潵榪斿洖涓涓楀彿鍒嗛殧鐨勫瓧絎︿覆鍊箋?br />
閫氳繃鏌ョ湅Tapestry涓殑checkbox鐨勬簮鐮侊紙宸茬粡闄勫湪鏂囩珷鐨勫悗闈級鍙互鐭ラ亾錛孴apestry鍙互寰堝鏄撳湴閫氳繃Request鏉ヨ幏鍙朏orm涓殑鍙橀噺鐨勫箋?br />
閬囧埌鐨勯棶棰橈細
Tapestry鐨刢heckbox緇勪歡涓嶅厑璁歌緗浉鍚岀殑name錛屽鏋渘ame鐩稿悓錛孴apestry浼氳嚜鍔ㄥ湪name鍚庨潰娣誨姞鍚庣紑鏉ヤ嬌涔嬩笉鍚屻?br />
If a component renders multiple times, a suffix will be appended to the to id to ensure uniqueness錛坔ttp://tapestry.apache.org/tapestry5.1/tapestry-core/ref/org/apache/tapestry5/corelib/components/Checkbox.html錛夈傚鏋滃悇checkbox鐨刵ame涓嶅悓錛屾垜浠棤娉曢氳繃request鏉ヨ幏寰椾竴緇刢heckbox鐨勫箋?br />
鎬濊礬錛?br />
鍦ㄩ〉闈㈡ā鏉夸腑涓嶄嬌鐢╰apestry鐨刢heckbox緇勪歡錛岃屼嬌鐢℉tml鐨刢heckbox錛岃繖鏍峰彲浠ラ伩鍏峵apestry鑷姩淇敼checkbox鐨刵ame銆?br />
娣誨姞涓涓柊鐨則apestry緇勪歡錛屾潵鏄犲皠鎺ュ彈鎵鏈夊悓鍚嶇殑checkbox鐨勫鹼紝騫舵妸鍊艱繑鍥炵粰tapestry欏甸潰涓搴旂殑鍙橀噺銆傝繖涓粍浠墮渶瑕佹湁涓涓睘鎬э紝榪欎釜灞炴х殑鍊煎氨鏄墍鏈夊悓緇刢heckbox鐨刵ame錛岃繖鏍鳳紝榪欎釜緇勪歡灝卞彲浠ラ氳繃Request鏉ヨ幏鍙栨墍鏈夌浉鍚宯ame鐨刢heckbox鐨勫箋?br />
浠g爜錛?br />
1 public class CheckBoxGroup extends AbstractField {
2
3 @SuppressWarnings( " unused " )
4 @Parameter(required = true , autoconnect = true )
5 private String value;
6
7 @Parameter(required = true , autoconnect = true )
8 private String groupName;
9
10 @Inject
11 private Request request;
12
13 @SuppressWarnings( " unused " )
14 @Mixin
15 private RenderDisabled renderDisabled;
16
17 @Inject
18 private ComponentResources resources;
19
20 @BeginRender
21 void begin(MarkupWriter writer)
22 {
23 writer.element( " input " , " type " , " checkbox " ,
24 " name " , groupName,
25 " id " , getClientId(),
26 " style " , " display:none " );
27
28 resources.renderInformalParameters(writer);
29
30 decorateInsideField();
31 }
32
33 @AfterRender
34 void after(MarkupWriter writer)
35 {
36 writer.end(); // input
37 }
38
39 @Override
40 protected void processSubmission(String elementName)
41 {
42 String elementValue = "" ;
43 String[] valueArray = request.getParameters(groupName);
44 if ( valueArray != null && valueArray.length > 0 ) {
45 elementValue = valueArray[ 0 ];
46 for ( int i = 1 ; i < valueArray.length; i ++ ) {
47 elementValue += " , " + valueArray[i];
48 }
49 }
50 value = elementValue;
51 }
52 }
緇勪歡鐨勪嬌鐢細
-----tml------
<t:CheckBoxGroup t:groupName="literal:bookId" t:value="selectedBooks"/>
<t:loop source="bookList" value="book" encoder="encoder">
<div><input type="checkbox" name="bookId" value="${book.id}"/> ${book.name}</div>
</t:loop>
娉ㄦ剰checkBoxGroup鐨刧roupName鍜屽叾浠朿heckbox鐨刵ame蹇呴』涓鑷達紝checkBoxGroup鐨剉alue鐨勫煎氨鏄〉闈腑鐨勫彉閲忓悕
-----java-----
@SuppressWarnings("unused")
@Property
private final ValueEncoder<Book> encoder = new ValueEncoder<Book>() {
public String toClient(Book value) {
return String.valueOf(value.getId());
}
public Book toValue(String clientValue) {
return bookDao.getBook(Integer.parseInt(clientValue));
}
};
public List<Book> getBookList() {
return bookDao.getBooks();
}
@SuppressWarnings("unused")
@Property
private Book book;
@SuppressWarnings("unused")
@Property
private String selectedBooks;
]]> Tapestry 鏈鏂扮増5.1.0.5鏁欑▼錛堝崄錛夛細欏甸潰闂翠紶閫掑涓弬鏁?/title> http://www.tkk7.com/usherlight/archive/2010/02/06/312181.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Sat, 06 Feb 2010 04:36:00 GMT http://www.tkk7.com/usherlight/archive/2010/02/06/312181.html http://www.tkk7.com/usherlight/comments/312181.html http://www.tkk7.com/usherlight/archive/2010/02/06/312181.html#Feedback 4 http://www.tkk7.com/usherlight/comments/commentRss/312181.html http://www.tkk7.com/usherlight/services/trackbacks/312181.html 鍦╰apestry5涓紝鍦ㄩ〉闈箣闂翠紶閫掑熀鏈湁3縐嶆柟娉?br />
1銆佸瓨鏀懼湪Session涓?br />
2銆佷嬌鐢ˊPersist榪涜鎸佷箙鍖?br />
3銆佷嬌鐢ㄩ〉闈ontext鏉ヤ紶閫掑弬鏁般?br />
鍏朵腑1鍜?閮介渶瑕佸皢鏁版嵁瀛樻斁鍦⊿ession涓紝鐩稿鏉ヨ緋葷粺鐨勫紑閿姣旇緝澶с傚挨鍏舵槸澶氱敤鎴烽珮騫跺彂鎯呭喌涓嬶紝瀵逛簬鎬ц兘鍙兘浼氭湁涓瀹氱殑褰卞搷銆?br />
浣跨敤欏甸潰Context鏉ヤ紶閫掑垯闇瑕佸湪寮鍙戞椂鍐欎竴浜涗唬鐮侊紝澧炲姞浜嗕竴浜涘紑鍙戦噺錛屾樉寰楁病鏈夊墠涓ょ鏂規硶鏂逛究銆?br />
絎?縐嶆柟娉曠殑瀹炵幇鏄渶瑕佸湪欏甸潰涓坊鍔爋nActivate鍜宱nPassivate鏂規硶鏉ュ畬鎴愰〉闈㈠弬鏁扮殑浼犻掋?br />
鎴戜滑鍏堟潵鐪嬩竴涓嬪叾鑳屽悗鐨勬晠浜嬨?br />
涓句釜渚嬪瓙錛屾瘮濡傝鎴戜滑鏈変袱涓〉闈紝絎竴涓槸鏌ヨ鏉′歡杈撳叆欏甸潰input錛屽彟涓涓槸鏌ヨ緇撴灉杈撳嚭欏甸潰output銆俰nput欏甸潰涓湁涓や釜鏌ヨ鏉′歡錛岃搗濮嬫椂闂磀ateFrom鍜岀粓姝㈡椂闂磀ateTo
鍦↖nput.java涓紝鎴戜滑鍙互寰堢洿瑙傚湴榪欐牱鍐欙細
@InjectPage
private Output output;
@Property
private String dateFrom;
@Property
private String dateTo;
Object onFormSubmit() {
output.setDateFrom(dateFrom);
output.setDateTo(dateTo);
return output;
}
棣栧厛浣跨敤娉ㄨВ娉ㄥ叆output欏甸潰錛岀劧鍚庡湪琛ㄥ崟鐨勬彁浜や簨浠朵腑錛岃繑鍥瀘utput錛岃繖鏍峰氨鍦ㄧ▼搴忎腑瀹氫箟浜嗚繑鍥為〉闈紝鑰屼笉鏄嬌鐢ㄩ厤緗枃浠剁殑鏂瑰紡銆?br />
浣嗘槸榪欐牱鐨勫疄鐜板嵈涓嶈兘姝g‘榪愯錛屽師鍥犳槸鍥犱負Tapestry5鐨勪嬌鐢ㄤ簡欏甸潰姹犳妧鏈紝欏甸潰鍦ㄦ瘡嬈℃覆鏌撳墠閮芥槸浠庨〉闈㈡睜涓殢鏈鴻幏鍙栦竴涓〉闈紝鑰屼粠欏甸潰姹犱腑鍙栧緱鐨勯〉闈紝鎵鏈夌殑灞炴ч兘鏄娓呯┖浜嗙殑銆?br />
涔熷氨鏄鍦ㄤ笂渚嬩腑錛岃櫧鐒舵垜浠敞鍏ヤ簡output欏甸潰錛屼絾鏄欏甸潰椹笂灝辮鏀懼叆浜嗛〉闈㈡睜錛岃屼笖鍏朵腑鐨勫睘鎬у奸┈涓婂氨琚竻絀轟簡銆傝繖灝辨槸寮曞叆onActivate鍜宱nPassivate榪欎笝涓柟娉曠殑鍘熷洜銆倀apestry5鍦ㄦ竻絀哄睘鎬у墠浼氶鍏堟煡鐪嬫槸鍚﹀寘鍚玱nPassivate鏂規硶錛屽鏋滄湁錛屽氨鎶婂叾榪斿洖鍊間繚瀛樿搗鏉ワ紝鐒跺悗浠庨〉闈㈡睜涓彇寰楅〉闈㈠悗錛屽啀鎶婂垰鎵嶄繚瀛樼殑鍊間綔涓哄弬鏁頒紶閫掔粰onActivate鏂規硶銆?br />
榪欏氨鏄柟娉?鐨勫熀鏈師鐞嗭紝浣嗘槸鏃犺鏄湪瀹樻柟鐨勬枃妗f垨鏄ず渚嬫垨鑰呯綉涓婂叾浠栫殑搴旂敤涓紝鍙互鍙戠幇澶ч儴鍒嗛兘鏄嬌鐢ㄥ崟涓弬鏁扮殑錛屾瘮濡傝id銆傝繖涔熷緢瀹規槗鐞嗚В錛屽洜涓簅nPassivate鐨勬柟娉曠殑榪斿洖鍊煎彧鑳芥湁涓涓?br />
鍦═apestry5鐨勫畼鏂規枃妗d腑錛屽彧鏈変竴鍙ラ潪甯哥畝瑕佺殑璇濅粙緇嶄簡濡傛灉浼犻掑涓枃妗g殑鏂規硶錛?The activation context may consist of a series of values, in which case the return value of the method should be an array or a List. 錛堝弬瑙侊細http://tapestry.apache.org/tapestry5.1/guide/pagenav.html錛夈?br />
浣嗘槸榪欏茍涓嶆槸璇村彧瑕佸湪onPassivate涓妸鍙傛暟鐨勫煎姞鍏ュ埌List涓紝榪斿洖涓涓狶ist錛岃屽湪onActivate涓帴鍙椾竴涓狶ist鍙傛暟錛岀劧鍚庡氨鍙互寰楀埌鍏朵腑鐨勫弬鏁頒簡錛屽洜涓篢apestry5鎶婂弬鏁頒紶緇檕nActivate鐨勬柟娉曞叾瀹炴槸閫氳繃灝嗗弬鏁頒綔涓篐ttpRequest涓殑鍙傛暟鐨勩傚鏋滆瘯鍥句嬌鐢ㄤ笂榪版柟娉曞氨鏄緱鍒頒竴涓?#8220;鏃犳硶灝哃ist杞崲鎴怱tring鐨勯敊璇?#8221;
鎵浠ユ柟娉曞簲璇ユ槸榪欐牱鐨勶紝鍦∣utput涓細
private List<String> paramList;
public void setParamList(List<String> paramList) {
this.paramList = paramList;
}
public List<String> getParamList() {
return paramList;
}
List<String> onPassivate() {
return paramList;
}
void onActivate(String dateFrom, String dateTo) {
this.dateFrom = dateFrom;
this.dateTo = dateTo;
}
private String dateFrom;
private String dateTo;
鍦↖nput欏甸潰涓紝闇瑕佹妸onFormSubmit鏀逛竴涓嬶細
Object onFormSubmit() {
List<String> list = new ArrayList<String>();
output.setParamList(list);
return output;
}
鍏朵腑錛岄渶瑕佹敞鎰忕殑鏄痮utput涓殑onActivate鏂規硶錛屽熀鍙傛暟鐨勯『搴忓繀欏誨拰List涓斁鍏ョ殑鍙傛暟欏哄簭涓鑷淬?/p>
]]> Tapestry鏈鏂扮増5.1.0.5鏁欑▼錛堜節錛夛細鏉冮檺鎺у埗妗嗘灦鐨勫疄鐜?榪涢樁綃?/title> http://www.tkk7.com/usherlight/archive/2010/02/04/312016.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Thu, 04 Feb 2010 11:17:00 GMT http://www.tkk7.com/usherlight/archive/2010/02/04/312016.html http://www.tkk7.com/usherlight/comments/312016.html http://www.tkk7.com/usherlight/archive/2010/02/04/312016.html#Feedback 1 http://www.tkk7.com/usherlight/comments/commentRss/312016.html http://www.tkk7.com/usherlight/services/trackbacks/312016.html 鍦ㄤ笂涓綃囦腑鎴戜滑鐮旂┒浜嗗浣曞疄鐜癝pringSecurity涓璊sp Tag鐨?lt;security:authorize ifAllGranted="ROLE_SUPERVISOR">鐨勫姛鑳姐傝繖涓嬈℃垜浠竴璧風爺絀朵竴涓嬪浣曞疄鐜板湪Tapestry5.1涓坊鍔犱竴涓狥ilter鏉ュ鎵鏈夌殑鎿嶄綔榪涜鏉冮檺鐨勮繃婊ゆ帶鍒躲?br />
鍦⊿pringSecurity涓紝鎴戜滑涓鑸槸鍦╝pplication-context.xml涓紝娣誨姞涓涓猄pringSecurity鐨凢ilter錛岀劧鍚庡湪鍙﹀涓涓獂ml涓緇嗛厤緗浣曟牴鎹甎rl鐨勮鍒欒繘琛屾潈闄愮殑鎺у埗銆傝孴apestry鐨勫摬瀛︽槸灝介噺鍑忓皯Xml涓殑閰嶇疆錛堝叾IOC瀹瑰櫒涔熷熀鏈笂鏄熼壌Guice鑰屼笉Spring鐨勶級錛屾墍浠ユ垜浠篃鏄湪浠g爜涓疄鐜版潈闄愯鍒欑殑鎺у埗銆?br />
鎬諱綋涓婃潵鐪嬶紝鍙互鐢ㄤ袱縐嶆柟寮忔潵瀹炵幇url瑙勫垯錛屼竴縐嶆槸Request綰у埆鐨凢ilter錛屼竴縐嶆槸欏甸潰緇勪歡綰у埆鐨凢ilter錛屽鏋滄槸Request綰у埆鐨勮瘽錛屽彲浠ヤ粠Request瀵硅薄涓幏鍙朥rl璺緞錛岃繖鏍峰氨涓嶴pringSecurity鍩烘湰涓鏍蜂簡銆傛湰鏂囦富瑕佷粙緇嶉〉闈㈢粍浠剁駭鍒殑Filter錛屼粠涓垜浠篃鍙互浣撲細鍒癟apestry5.1涓殑IOC瀹瑰櫒鐨勫己澶у拰渚垮埄銆?/p>
榪欏氨鏄疐ilter鐨勪唬鐮侊紝榪欎釜Filter蹇呴』瀹炵幇ComponentRequestFilter鎺ュ彛銆傚煎緱娉ㄦ剰鐨勬槸鍏舵瀯閫犲嚱鏁版墍闇瑕佺敤鍒扮殑4涓弬鏁幫紝榪?涓弬鏁伴兘鏄疶apestry5鏈韓鑷湁鐨勬湇鍔★紝鎵浠ユ垜浠粈涔堜篃涓嶇敤鍋氾紝Tapestry5鑷姩浼氬皢鏈嶅姟鐨勫疄渚嬫敞鍏ヨ繘鏉ワ紝榪欏氨鏄疶apestry-IOC鐨勫▉鍔涖?br />
ComponentRequestFilter鎺ュ彛涓鍏辨湁4涓柟娉曢渶瑕佸疄鐜幫紝鍏蜂綋浠g爜濡備笅錛?/p>
1 public class RequiresLoginFilter implements ComponentRequestFilter {
2
3 private final PageRenderLinkSource renderLinkSource;
4
5 private final ComponentSource componentSource;
6
7 private final Response response;
8
9 private final ApplicationStateManager appStateManager;
10
11 public RequiresLoginFilter(PageRenderLinkSource renderLinkSource,
12 ComponentSource componentSource, Response response,
13 ApplicationStateManager appStateManager
14 ) {
15 this .renderLinkSource = renderLinkSource;
16 this .componentSource = componentSource;
17 this .response = response;
18 this .appStateManager = appStateManager;
19 }
20
21 public void handleComponentEvent(
22 ComponentEventRequestParameters parameters,
23 ComponentRequestHandler handler) throws IOException {
24
25 if (dispatchedToLoginPage(parameters.getActivePageName())) {
26 return ;
27 }
28
29 handler.handleComponentEvent(parameters);
30
31 }
32
33 public void handlePageRender(PageRenderRequestParameters parameters,
34 ComponentRequestHandler handler) throws IOException {
35 if (dispatchedToLoginPage(parameters.getLogicalPageName())) {
36 return ;
37 }
38 handler.handlePageRender(parameters);
39
40 }
41
42 private boolean dispatchedToLoginPage(String pageName) {
43 Component page = componentSource.getPage(pageName);
44
45 if (page.getClass().isAnnotationPresent(RequiresLogin. class )) {
46 if ( ! appStateManager.exists(Authentication. class )) {
47 redirect();
48 return true ;
49 }
50 Authentication auth = appStateManager.get(Authentication. class );
51 if ( auth == null ) {
52 redirect();
53 return true ;
54 }
55
56 if ( ! auth.isLoggedIn()) {
57 redirect();
58 return true ;
59 }
60
61 RequiresLogin requireLogin = page.getClass().getAnnotation(
62 RequiresLogin. class );
63 String ifNotGranted = requireLogin.ifNotGranted();
64 String ifAllGranted = requireLogin.ifAllGranted();
65 String ifAnyGranted = requireLogin.ifAnyGranted();
66 boolean permitted = auth.checkPermission(ifNotGranted, ifAllGranted, ifAnyGranted);
67 if ( ! permitted ) {
68 return true ;
69 }
70 }
71
72 return false ;
73 }
74
75 private void redirect() {
76 Link link = renderLinkSource.createPageRenderLink( " Logout " );
77
78 try {
79 response.sendRedirect(link);
80 } catch (Exception e) {
81 }
82 }
83
84 }
鍦–omponentRequestFilter涓紝鎴戜滑鏃犳硶浣跨敤@SessionState娉ㄨВ鏉ョ洿鎺ユ敞鍏ession涓殑鍙橀噺錛屼絾鏄垜浠彲浠ラ氳繃ApplicationStateManager鏉ュ彇寰椼?/p>
鐜板湪鎴戜滑闇瑕佹妸鍒氬畾涔夌殑Filter娉ㄥ唽鍒扮郴緇熶腑錛屽緢綆鍗曪紝鍙鍦ˋppModule涓坊鍔犱互涓嬪嚱鏁板氨琛屼簡錛?/p>
1 public static void contributeComponentRequestHandler(
2 OrderedConfiguration < ComponentRequestFilter > configuration) {
3 configuration.addInstance( " RequiresLogin " , RequiresLoginFilter. class );
4 }
5
浠庢湰渚嬪瓙涓垜浠彲浠ョ湅鍒癟apesty Ioc瀹瑰櫒浣跨敤鐨勪究鍒╂э紝涔熻璇嗗埌浜咺oc瀹瑰櫒鍦═apestry浣撶郴涓殑閲嶈鎬?img src ="http://www.tkk7.com/usherlight/aggbug/312016.html" width = "1" height = "1" /> ]]> Tapestry5.1涓璲ava.lang.ClassFormatError: Invalid length nnn in LocalVariableTable in class file 閿欒鐨勮В鍐?/title> http://www.tkk7.com/usherlight/archive/2010/01/21/310302.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Wed, 20 Jan 2010 23:28:00 GMT http://www.tkk7.com/usherlight/archive/2010/01/21/310302.html http://www.tkk7.com/usherlight/comments/310302.html http://www.tkk7.com/usherlight/archive/2010/01/21/310302.html#Feedback 0 http://www.tkk7.com/usherlight/comments/commentRss/310302.html http://www.tkk7.com/usherlight/services/trackbacks/310302.html
Exception in thread "main" java.lang.ClassFormatError: Invalid length 561 in LocalVariableTable in class file
鍦ㄧ綉涓婃悳绱㈠悗錛屽彂鐜版湁浜轟篃鏈夊悓鏍風殑閿欒錛岃В鍐蟲柟娉曟湁涓ょ錛?br />
http://mail-archives.apache.org/mod_mbox/tapestry-users/200909.mbox/%3Cecd0e3310909040909id5275beld935fc60d54d490a@mail.gmail.com%3E
鍏朵腑涓涓漢鐨勯敊璇師鍥犳槸鍦ㄥ叾綾昏礬寰勪腑鏈変笉鍚岀増鏈殑javassists鐨刯ar鏂囦歡銆?br />
鍙︿竴涓殑瑙e喅鏂規硶鏄嬌鐢╡clipse鑷甫鐨刯dk鏉ョ紪璇慾ava綾匯?br />
鑰屾垜鑷繁浠旂粏媯鏌ヤ簡綾昏礬寰勪腑鐨勬枃浠訛紝騫舵病鏈夐噸澶嶇殑javassists錛屼笉榪囨垜瑙夊緱闂搴旇灝卞湪javassists涓婏紝
鍥犱負榪欐樉鐒舵槸javassists鍦ㄦ搷浣渃lass鏂囦歡鏃舵姤鐨勯敊璇紝
鎴戝幓緗戜笂鎼滅儲榪欐柟闈㈢殑淇℃伅錛屽彂鐜版湁濂藉嚑涓漢閮藉拰鎴戜竴鏍峰湪浣跨敤javassists3.11.0GA鐗堟湰鐨勬椂鍊欙紝浼氬嚭鐜拌繖涓敊璇?br />
鍚庢潵錛屾垜鏀圭敤Tapestry5涓嚜甯︾殑javassists3.9.0GA鍚庯紝闂娑堝け浜嗐?br />
榪欐緇忛獙鏁欒鏄茍涓嶆槸鎵鏈夋渶鏂扮殑涓滆タ閮芥槸鏈濂界殑銆傚悎閫傜殑鎵嶆槸鏈濂界殑銆?br /> ]]> Tapestry鏈鏂扮増5.1.0.5鏁欑▼錛堝叓錛夛細鏉冮檺鎺у埗妗嗘灦鐨勫疄鐜?鍩虹綃?/title> http://www.tkk7.com/usherlight/archive/2010/01/12/309226.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Tue, 12 Jan 2010 12:17:00 GMT http://www.tkk7.com/usherlight/archive/2010/01/12/309226.html http://www.tkk7.com/usherlight/comments/309226.html http://www.tkk7.com/usherlight/archive/2010/01/12/309226.html#Feedback 0 http://www.tkk7.com/usherlight/comments/commentRss/309226.html http://www.tkk7.com/usherlight/services/trackbacks/309226.html
鏈枃涓昏浠嬬粛濡備綍瀹炵幇綾諱技浜嶴pringSecurity鐨刯sp tag鐨勫姛鑳姐傚湪Tapestry涓紝鍒╃敤Components瀹炵幇榪欎竴鐐歸潪甯稿鏄撱?br />
鍏跺熀鏈師鐞嗘槸Tapestry5涓竴涓〉闈㈡垨鑰呯粍浠剁殑娓叉煋鐢熸垚榪囩▼鏄熀浜庝竴涓姸鎬佹満鍜岄槦鍒楀畬鎴愮殑銆傝繖鏍鳳紝娓叉煋鐢熸垚榪囩▼灝辮緇嗗垎鎴愪簡寰堝涓皬妯″潡錛屾垜浠彲浠ラ潪甯稿鏄撳湴瑕嗗啓榪欎簺灝忔ā鍧椼傚叿浣撳唴瀹硅瑙佸畼鏂規枃妗o細http://tapestry.apache.org/tapestry5.1/guide/rendering.html銆傚鏋滄潈闄愭牎楠屼笉閫氳繃錛屾垜浠氨鍙互鎺у埗涓嶆樉紺虹粍浠剁殑鍐呭銆?br />
鎴戜滑榪欓噷灝辨槸涓昏渚濊禆榪欎釜榪囩▼鏉ュ疄鐜板湪欏甸潰榪欎竴灞傞潰瀵規潈闄愯繘琛屾牎楠屽拰鎺у埗銆?br />
浠g爜涓昏鍖呭惈涓ゅぇ閮ㄥ垎錛屼竴涓粍浠跺拰涓涓敤浜庢潈闄愭帶鍒剁殑鏈嶅姟銆?br />
鍙傝冧簡Tapestry-Spring-Security鐨勫疄鐜幫紝鎴戜篃灝嗙粍浠跺懡鍚嶄負IfRole錛堝綋鐒訛紝鎴戜滑涔熷彲浠ュ拰Tapestry-Spring-Security涓鏍鳳紝涔熷啀鐢熸垚涓涓狪fLoggedIn緇勪歡錛夈傛潈闄愭帶鍒剁殑鏈嶅姟鎴戝懡鍚嶄負錛欰uthenticationService銆?br />
涓昏鐨勫疄鐜版濊礬錛?br />
灝咥uthenticationService鐢蟲槑涓篠essionState鍙橀噺銆傝繖鏍瘋繖涓彉閲忓氨鍙互鍦ㄦ墍鏈夌殑欏甸潰鍜岀粍浠朵箣闂村緢鏂逛究鍦板叡浜簡銆備竴鑸儏鍐典笅錛屾槸鍦ㄧ櫥褰曢〉闈㈠AuthenticationService榪涜璧嬪鹼紝鑰屽湪閫鍑洪〉闈㈡竻絀篈uthenticationService榪欎釜鍙橀噺銆?br />
浠g爜錛堣繖閮ㄥ垎浠g爜瀹屽叏鏍規嵁搴旂敤鐨勯渶姹傝繘鑷鏇存敼錛夛細
AuthenticationService鐨勪唬鐮侊細
public class AuthenticationService {
private List < String > privilegeList;
// privilegeList 鐨刧etter and setter
public boolean checkPermission(String ifNotGranted, String ifAllGranted,
String ifAnyGranted) {
if ((( null == ifAllGranted) || "" .equals(ifAllGranted))
&& (( null == ifAnyGranted) || "" .equals(ifAnyGranted))
&& (( null == ifNotGranted) || "" .equals(ifNotGranted))) {
return false ;
}
if (( null != ifNotGranted) && ! "" .equals(ifNotGranted)) {
StringTokenizer st = new StringTokenizer(ifNotGranted, " , " );
while (st.hasMoreTokens()) {
String value = st.nextToken();
if (privilegeList.contains(value)) {
return false ;
}
}
}
if (( null != ifAllGranted) && ! "" .equals(ifAllGranted)) {
StringTokenizer st = new StringTokenizer(ifAllGranted, " , " );
while (st.hasMoreTokens()) {
String value = st.nextToken();
if ( ! privilegeList.contains(value)) {
return false ;
}
}
}
if (( null != ifAnyGranted) && ! "" .equals(ifAnyGranted)) {
StringTokenizer st = new StringTokenizer(ifAnyGranted, " , " );
while (st.hasMoreTokens()) {
String value = st.nextToken();
if (privilegeList.contains(value)) {
return true ;
}
}
return false ;
}
return true ;
}
}
IfRole鐨勪唬鐮侊紙榪欎釜綾婚渶瑕佹斁鍦–omponents鐩綍涓嬶級錛?br />
public class IfRole {
/** */ /**
* A comma-separated list of roles is supplied to one or more of the
* following parameters. If none are supplied, the default behavior is to
* forbid access. Behavior should be self-explanatory.
*/
@Parameter(required = false , defaultPrefix = " literal " )
private String ifAllGranted;
@Parameter(required = false , defaultPrefix = " literal " )
private String ifAnyGranted;
@Parameter(required = false , defaultPrefix = " literal " )
private String ifNotGranted;
/** */ /**
* An alternate {@link Block} to render if the test parameter is false. The default, null, means
* render nothing in that situation.
*/
@Parameter(name = " else " )
private Block elseBlock;
private boolean test;
@SessionState
private AuthenticationService auth;
private boolean checkPermission() {
return auth.checkPermission(ifNotGranted, ifAllGranted, ifAnyGranted);
}
void setupRender() {
test = checkPermission();
}
/** */ /**
* Returns null if the test method returns true, which allows normal
* rendering (of the body). If the test parameter is false, returns the else
* parameter (this may also be null).
*/
Object beginRender() {
return test ? null : elseBlock;
}
/** */ /**
* If the test method returns true, then the body is rendered, otherwise not. The component does
* not have a template or do any other rendering besides its body.
*/
boolean beforeRenderBody() {
return test;
}
}
紺轟緥錛?br />
1. 鍦ㄧ櫥褰曢〉闈細
@SessionState
private Authentication auth;
......
// if user name and password is valid:
auth.setPrivliegeList(.....);
2. 鍦ㄩ渶瑕佹潈闄愭帶鍒剁殑欏甸潰妯℃澘涓細
<t:ifRole ifAllGranted="admin">
administrator can see this block
</t:ifRole>
]]> Tapestry鏈鏂扮増5.1.0.5鏁欑▼錛堜竷錛夛細涓嶪Batis3鐨勬暣鍚?/title> http://www.tkk7.com/usherlight/archive/2010/01/06/308415.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Wed, 06 Jan 2010 04:20:00 GMT http://www.tkk7.com/usherlight/archive/2010/01/06/308415.html http://www.tkk7.com/usherlight/comments/308415.html http://www.tkk7.com/usherlight/archive/2010/01/06/308415.html#Feedback 2 http://www.tkk7.com/usherlight/comments/commentRss/308415.html http://www.tkk7.com/usherlight/services/trackbacks/308415.html
鏈枃涓昏浠嬬粛濡備綍灝員apestry5.1鍜孖Batis3榪涜鏁村悎銆?br zid="3" />
綆瑕佹楠わ細
1. 鍑嗗宸ヤ綔
2. 鏁版嵁搴撶殑寤虹珛
3. POJO鐨勫緩绔?br zid="7" />
4. IBatis鐩稿叧閰嶇疆鏂囦歡鐨勫垱寤?br zid="8" />
5. Tapestry鐩稿叧浠g爜鐨勫畬鎴?br zid="9" />
姒傝璇存槑錛?br zid="10" />
1銆佸噯澶囧伐浣溿傝繖涓閮ㄥ垎鏄瘮杈冪畝鍗曠殑錛孍clipse涔嬬被鐨勫紑鍙戠幆澧冩槸蹇呴渶鐨勩俆apestry5.1銆両Batis3錛堢洰鍓嶈繕鏄疊eta7錛夈佹暟鎹簱錛堟垜浣跨敤鐨勬槸MySql錛夌殑涓嬭澆瀹夎銆?br zid="11" />
2銆佹暟鎹簱鐨勫緩绔嬶紝鐢變簬鏄ず渚嬶紝鎵浠ユ暟鎹簱鐨勫緩绔嬩篃闈炲父綆鍗曪紝鍙湁涓寮燯ser琛紝3涓瓧孌碉紝Id錛孨ame錛孭assword
3銆乧om.sample.User綾伙紝瀵瑰簲鏁版嵁搴撹〃鐨?涓瓧孌碉紝鐢熸垚User綾?br zid="13" />
4銆両Batis閰嶇疆鏂囦歡錛欳onfiguration.xml錛孶serMapper.xml錛宩dbc.properties鐨勭敓鎴? 鍓嶄袱涓繀闇錛屾渶鍚庝竴涓彲閫?
5銆佸湪AppModule閲岋紝浣跨敤build鏂規硶, 娣誨姞鏈嶅姟鐢熸垚IBatis3鐨凷qlSessionFactory, 鍦ㄩ渶瑕佷嬌鐢⊿qlSessionFactory鐨勫湴鏂癸紝浣跨敤@InjectService娉ㄥ叆鍗沖彲
璇︾粏璇存槑錛?br zid="16" />
1銆佸ぇ瀹跺埌鍚勮嚜鐨勭綉绔欎笂涓嬭澆鐩稿簲鐨勫寘濂戒簡銆傛垜鍙綏鍒椾竴涓嬫垜鎵鐢ㄥ埌鐨凩ib錛?br zid="23" />
antlr-runtime-3.1.1.jar
commons-codec-1.3.jar
commons-lang-2.4.jar
ibatis-3-core-3.0.0.216.jar
javassist.jar
log4j-1.2.14.jar
mysql-connector-java-5.0.5.jar
slf4j-api-1.5.10.jar
slf4j-log4j12-1.5.10.jar
stax2-api-3.0.1.jar
tapestry-core-5.1.0.5.jar
tapestry-ioc-5.1.0.5.jar
tapestry5-annotations-5.1.0.5.jar
woodstox-core-lgpl-4.0.7.jar
2銆丆reate Table
DROP TABLE IF EXISTS `test`.`user`;
CREATE TABLE `test`.`user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`password` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
3銆?br zid="175" />
package com.sample.model;
public class User {
private long id;
private String name;
private String password;
// getter and setter ....
}
4銆佹垜鎶奀onfiguration.xml鍜孶serMapper.xml閮芥斁鍦╯rc鐩綍涓嬶紝榪欐牱鍦ㄩ儴緗茬殑鏃跺欙紝灝辨槸鐢熸垚鍦╟lasses錛屼篃灝辨槸綾昏礬寰勭殑鏍圭洰褰曚笅銆?br zid="177" />
Configuration.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
<properties resource="jdbc.properties">
</properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="poolPingEnabled" value="${pingenable}"/>
<property name="poolPingQuery" value="${pingquery}"/>
<property name="poolPingConnectionsNotUsedFor" value="${pingnotusetime}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
UserMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.sample.model.UserMapper">
<select id="selectUser" parameterType="int" resultType="com.sample.model.User">
select * from user where id = #{id}
</select>
</mapper>
jdbc.properties:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/test?autoReconnect=true
jdbc.username=root
jdbc.password=root
pingenable=true
pingquery=SELECT 1
pingoldertime=0
pingnotusetime=3600000
5銆?br zid="172" />
package com.sample.web.services;
public class AppModule {
public static SqlSessionFactory buildSqlSessionFactory() {
try {
String resource = "Configuration.xml";
Reader reader = Resources.getResourceAsReader(resource);
return new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
logger.warn("failed to build SqlSessionFactory: ", e);
return null;
}
}
private static Logger logger = LoggerFactory.getLogger(AppModule.class);
}
package com.sample.model;
public interface UserMapper {
public User selectUser(int id);
}
package com.pc.sample.web.pages;
public class Layout {
@InjectService("SqlSessionFactory")
private SqlSessionFactory sqlMapper;
public String getUserName() {
if ( sqlMapper == null ) {
return "null-mapper";
}
SqlSession session = sqlMapper.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
if ( userMapper == null ) {
return "null-userMapper";
}
User user = userMapper.selectUser(1);
if ( user == null ) {
return "null-user";
}
return user.getName();
} catch (Exception e) {
return "exception-" + e.getMessage();
} finally {
session.close();
}
}
}
鍑犱釜娉ㄦ剰浜嬮」錛?br zid="179" />
1錛?
鍥犱負鎴戠殑IBatis鐨勯厤緗枃浠禖onfiguration.xml鏄斁鍦ㄧ被璺緞鐨勬牴鐩綍涓嬶紝鎵浠ュ湪鍒濆鍖朣qlSessionFactory鐨勬椂鍊欙紝鐩?
鎺ョ敤String resource =
"Configuration.xml";灝辮浜嗭紝鍚﹀垯闇瑕佹坊鍔犵浉搴旂殑璺緞錛屾瘮濡傦細鎶奀onfiguration.xml涓嶶ser綾繪斁鍦ㄤ竴璧鳳紝涔熷氨鏄湪
com.sample.model榪欎釜package涓紝閭d箞灝辮鍐欐垚錛歋tring resource =
"com/sample/model/Configuration.xml";
鍚屾牱錛屽湪Configuration.xml涓紝鎸囧畾UserMapper.xml鐨勮鍒欎篃鏄繖鏍風殑銆?br zid="181" />
2錛孶serMapper鐨勪嬌鐢ㄣ侻apper鐨勪嬌鐢ㄦ槸IBatis3涓墠鏈夌殑鏂板姛鑳斤紝涔熸槸IBatis鐢ㄦ埛鎸囧崡涓帹鑽愪嬌鐢ㄧ殑鏂瑰紡銆傚洜涓鴻繖鏍蜂嬌鐢ㄧ殑璇濓紝灝卞畬鍏ㄩ伩鍏嶄簡綾誨瀷鐨勫己鍒惰漿鎹紝瀹炵幇浜嗙被鍨嬪畨鍏ㄣ?br zid="182" />
闇瑕佹敞鎰忕殑鏄疷serMapper鍙槸涓涓帴鍙c傛垜浠笉闇瑕佹彁渚涜繖涓帴鍙g殑鍏蜂綋瀹炵幇銆侷Batis3浼氳嚜鍔ㄧ敓鎴愪竴涓叿浣撶殑瀹炰緥銆?br zid="183" />
鍏朵腑鐨勬柟娉曞悕蹇呴』涓嶶serMapper.xml涓殑select璇彞鐨刬d涓鏍楓傚湪鎴戠殑渚嬪瓙涓槸selectUser.
鍙﹀錛屾鏂規硶鐨勮繑鍥炲肩殑綾誨瀷蹇呴』涓嶶serMapper.xml涓厤緗殑returnType涓鑷淬?br zid="186" />
鏈鍚庤鎻愰啋鐨勬槸UserMapper.xml涓殑namespace蹇呴』鏄疷serMapper鐨勫叏綾誨悕,鍦ㄦ湰渚嬩腑灝辨槸com.sample.model.UserMapper ]]> Tapestry鏈鏂扮増5.1.0.5鏁欑▼錛堝叚錛夛細鏍稿績鍒╁櫒-IoC瀹瑰櫒浠嬬粛 http://www.tkk7.com/usherlight/archive/2009/09/12/294895.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Sat, 12 Sep 2009 14:07:00 GMT http://www.tkk7.com/usherlight/archive/2009/09/12/294895.html http://www.tkk7.com/usherlight/comments/294895.html http://www.tkk7.com/usherlight/archive/2009/09/12/294895.html#Feedback 1 http://www.tkk7.com/usherlight/comments/commentRss/294895.html http://www.tkk7.com/usherlight/services/trackbacks/294895.html 鍏舵牳蹇冩濇兂灝辨槸浣跨敤Java浠g爜鑷韓鏉ヨВ鍐充緷璧栨敞鍏ヨ屼笉鏄敱Xml涔嬬被鐨勯厤緗枃浠舵潵瀹屾垚錛岃繖鍜孏uice鐨勬濇兂鏄潪甯哥浉浼肩殑錛孡ewis涔熸壙璁や粠Guice閭i噷鍊熼壌浜嗕笉灝戙? 鍙﹀闇瑕佽鏄庝竴涓嬬殑鏄紝Tapesty榪樹粠涓浗鐨勪竴涓潪甯稿彜鑰佷絾鍙堝厖婊″摬鐞嗙殑娓告垙--鍥存涓熼壌浜嗕竴浜涙湳璇拰鎬濇兂銆傚ぇ鎰忔槸鍥存涓粡甯歌鎶婃瀛愯蛋鐨勮交鐩?Lightness)錛岃姣忎釜媯嬪瓙閮借兘灝介噺鍦伴珮鏁堛傜紪紼嬩篃涓鏍瘋杞婚噺(Lightness)銆?nbsp; 闃呰鍏ㄦ枃 ]]> Tapestry鏈鏂扮増5.1.0.5鏁欑▼錛堜簲錛夛細Hello紺轟緥紼嬪簭鐨勫墫鏋?/title> http://www.tkk7.com/usherlight/archive/2009/07/10/286315.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Fri, 10 Jul 2009 12:15:00 GMT http://www.tkk7.com/usherlight/archive/2009/07/10/286315.html http://www.tkk7.com/usherlight/comments/286315.html http://www.tkk7.com/usherlight/archive/2009/07/10/286315.html#Feedback 5 http://www.tkk7.com/usherlight/comments/commentRss/286315.html http://www.tkk7.com/usherlight/services/trackbacks/286315.html
鏍規嵁鍓嶉潰鐨?閮ㄥ垎鍐呭錛屾垜浠凡緇忎簡瑙d簡Tapestry鐨勫熀鏈蹇碉紝鎺屾彙浜嗛厤緗佺粍浠剁瓑鍐呭銆傜幇鍦ㄦ垜浠氳繃鍓栨瀽Tapestry鐨勫叆闂ㄧず渚嬫潵瀵筎apestry榪涜涓涓諱綋涓婅璇嗐?br />
1銆亀eb.xml
<web-app>
<display-name>app Tapestry 5 Application</display-name>
<context-param>
<!-- The only significant configuration for Tapestry 5, this informs Tapestry
of where to look for pages, components and mixins. -->
<param-name>tapestry.app-package</param-name>
<param-value>t5demo</param-value>
</context-param>
<filter>
<filter-name>app</filter-name>
<filter-class>org.apache.tapestry.TapestryFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>app</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
榪欏氨鏄竴涓渶綆鍗曠殑Tapestry搴旂敤鎵闇瑕侀厤緗殑鍐呭浜嗐?br />
a.context-param涓殑tapestry.app-package閰嶇疆錛岃繖鍦ㄧ涓閮ㄥ垎璇磋繃錛氳繖鏄疶apestry瑕佹眰閰嶇疆鐨刯ava package鐨勫悕縐幫紝Tapestry鐩稿叧鍐呭閮介渶瑕佸湪榪欎釜package涓嬮潰鐨刾ages, services, componets瀛恜ackage涓嬨傝繖閲岀殑閰嶇疆鏄痶5demo
b.TapestryFileter鐨勯厤緗傝繖涓潪甯稿鏄撶悊瑙o紝鍑犱箮鎵鏈夌幇鍦ㄦ祦琛岀殑web妗嗘灦閮介渶瑕佷竴涓被浼肩殑瀹氫箟銆?/p>
2銆乻tart.tml浠ュ強鐩稿簲鐨刯ava class錛屼緥瀛愪腑灝辨槸t5demo.pages.Start.java
Start.java闈炲父綆鍗曪紝鍙畾涔変簡涓涓猤et鏂規硶錛?br />
public class Start
{
public Date getCurrentTime()
{
return new Date();
}
}
鐩稿簲鐨勯〉闈tart.tml
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
<head>
<title>app Start Page</title>
</head>
<body>
<h1>app Start Page</h1>
<p> This is the start page for this application, a good place to start your modifications.
Just to prove this is live: </p>
<p> The current time is: ${currentTime}. </p>
<p>
[<t:pagelink t:page="Start">refresh</t:pagelink>]
</p>
</body>
</html>
棣栧厛瑕佹敞鎰忓湪html鐨則ag涓姞鍏ヤ簡Tapestry鐨勫懡鍚嶇┖闂淬?br />
絎簩銆?{currentTime}灝辨槸Tapestry鐨凾ag浜嗭紝榪欓噷灝變細璋冪敤瀵瑰簲class鐨刧etCurrentTime鏂規硶鍦ㄩ〉闈笂鏄劇ず瀵瑰簲鐨勫箋?br />
絎笁銆?lt;t:pagelink>瀹氫箟涓涓埌鑷繁鏈韓欏甸潰鐨勯摼鎺ワ紝鏉ュ畬鎴愬埛鏂扮殑浠誨姟銆倀:pagelink鍦ㄦ湰緋誨垪鐨勭4閮ㄥ垎浠嬬粛榪囥?/p>
3銆侀渶瑕佺殑library錛?br />
commons-codec.jar
javassist.jar
log4j.jar
slf4j-api.jar
slf4j-log4j.jar
tapestry5-annotations-5.1.0.5.jar
tapestry-core-5.1.0.5.jar
tapestry-ioc-5.1.0.5.jar
4銆佸啀鍔犱笂涓涓猯og4j.properties錛岃繖灝辨槸涓涓渶綆鍗曠殑tapestry搴旂敤鎵闇瑕佺殑鍏ㄩ儴涓滆タ浜嗐?br />
鎬庝箞鏍鳳紝鎰熻榪樻槸鎸虹畝鍗曠殑鍚с?/p>
]]> Tapestry鏈鏂扮増5.1.0.5鏁欑▼錛堝洓錛?/title> http://www.tkk7.com/usherlight/archive/2009/06/20/283396.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Sat, 20 Jun 2009 11:57:00 GMT http://www.tkk7.com/usherlight/archive/2009/06/20/283396.html http://www.tkk7.com/usherlight/comments/283396.html http://www.tkk7.com/usherlight/archive/2009/06/20/283396.html#Feedback 3 http://www.tkk7.com/usherlight/comments/commentRss/283396.html http://www.tkk7.com/usherlight/services/trackbacks/283396.html 闃呰鍏ㄦ枃 ]]> Tapestry鏈鏂扮増5.1.0.5鏁欑▼錛堜笁錛?/title> http://www.tkk7.com/usherlight/archive/2009/06/05/280207.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Fri, 05 Jun 2009 06:24:00 GMT http://www.tkk7.com/usherlight/archive/2009/06/05/280207.html http://www.tkk7.com/usherlight/comments/280207.html http://www.tkk7.com/usherlight/archive/2009/06/05/280207.html#Feedback 0 http://www.tkk7.com/usherlight/comments/commentRss/280207.html http://www.tkk7.com/usherlight/services/trackbacks/280207.html 闃呰鍏ㄦ枃 ]]> Tapestry鏈鏂扮増5.1.0.5鏁欑▼錛堜簩錛夌畫 http://www.tkk7.com/usherlight/archive/2009/06/03/279852.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Wed, 03 Jun 2009 09:17:00 GMT http://www.tkk7.com/usherlight/archive/2009/06/03/279852.html http://www.tkk7.com/usherlight/comments/279852.html http://www.tkk7.com/usherlight/archive/2009/06/03/279852.html#Feedback 2 http://www.tkk7.com/usherlight/comments/commentRss/279852.html http://www.tkk7.com/usherlight/services/trackbacks/279852.html 闃呰鍏ㄦ枃 ]]> Tapestry鏈鏂扮増5.1.0.5鏁欑▼錛堜簩錛?/title> http://www.tkk7.com/usherlight/archive/2009/05/31/279277.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Sun, 31 May 2009 12:31:00 GMT http://www.tkk7.com/usherlight/archive/2009/05/31/279277.html http://www.tkk7.com/usherlight/comments/279277.html http://www.tkk7.com/usherlight/archive/2009/05/31/279277.html#Feedback 0 http://www.tkk7.com/usherlight/comments/commentRss/279277.html http://www.tkk7.com/usherlight/services/trackbacks/279277.html 闃呰鍏ㄦ枃 ]]> Tapestry鏈鏂扮増5.1.0.5鏁欑▼錛堜竴錛?/title> http://www.tkk7.com/usherlight/archive/2009/05/30/279014.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Sat, 30 May 2009 05:55:00 GMT http://www.tkk7.com/usherlight/archive/2009/05/30/279014.html http://www.tkk7.com/usherlight/comments/279014.html http://www.tkk7.com/usherlight/archive/2009/05/30/279014.html#Feedback 0 http://www.tkk7.com/usherlight/comments/commentRss/279014.html http://www.tkk7.com/usherlight/services/trackbacks/279014.html 闃呰鍏ㄦ枃 ]]> Tapestry5.1.0.5鐨勬ц兘嫻嬭瘯 http://www.tkk7.com/usherlight/archive/2009/05/16/271028.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Sat, 16 May 2009 11:38:00 GMT http://www.tkk7.com/usherlight/archive/2009/05/16/271028.html http://www.tkk7.com/usherlight/comments/271028.html http://www.tkk7.com/usherlight/archive/2009/05/16/271028.html#Feedback 1 http://www.tkk7.com/usherlight/comments/commentRss/271028.html http://www.tkk7.com/usherlight/services/trackbacks/271028.html Ben Gidley榪涜浜嗕竴涓叧浜嶵apestry5.1.0.5鐨勬ц兘嫻嬭瘯銆傚師鏂囪錛歨ttp://blog.gidley.co.uk/2009/05/tapestry-load-testing-round-up.html
鏈鍚庯紝浠栧緱鍑虹殑緇撹鏄細
錛戙乀apestry鐨勯熷害鏄瘮杈冨揩鐨勩傚嵆浣垮湪涓瀹氱殑鍘嬪姏涓婽apestry鐨勫弽搴旀椂闂翠篃鐩稿綋鐭俆apestry騫朵笉鎬繪槸鏈蹇殑瑙e喅鏂規錛屼絾瀹冨浜庢垜錛堣瘧娉細Gidley錛夊凡緇忚凍澶熷揩浜嗐?br />
錛掋乀apestry娌℃湁鍐呭瓨娉勬紡銆傛垜浠ュ墠鏇劇粡鍚榪嘥apestry浼氬崰鐢ㄥぇ閲忕殑鍐呭瓨錛屽疄闄呬笂錛屾濂界浉鍙嶃傚畠浣跨敤鐨勫唴瀛樻瘮struts/jsp榪樿灝戙傚唴瀛樹嬌鐢ㄦ洸綰跨浉褰撶殑騫沖潶銆?br />
錛撱乀apestry鍦ㄨ〃鍗曞簲鐢ㄤ腑姣攕truts瑕佸揩銆俆apestry鍦ㄥ簲鐢ㄥ彉寰楅潪甯稿鏉傜殑鏃跺欐湁涓瀹氱殑浼樺娍銆傝繖鍙兘鍒╃泭浜庡叾妯″潡姹犳妧鏈?br />
錛斻乀apestry涓嶈交鏄撳穿婧冿紝鍗充嬌宕╂簝錛屼篃浼氭仮澶嶃俆apestry鍦ㄦ瀬澶у帇鍔涚殑鎯呭喌涓嬬‘瀹炰細鐩稿簲鍙樻參錛屼絾鏄畠浼氭殏鍋滄垨鑰呴亣鍒扮摱棰堬紙璇戞敞錛氭垜鎬鐤戞槸浣滆呰繖閲屾湁絎旇錛屼粠璇皵鍜屼笂涓嬫枃鏉ョ湅錛屾劅瑙夊簲璇ヤ笉鏄殏鍋滃拰娌℃湁鐡墮錛夛紝榪欑殑紜槸涓涓ソ浜嬫儏銆傚彟澶栧湪鍘嬪姏鍑忚交涔嬪悗錛孴apestry鑳藉鑷姩鎭㈠銆?br />
錛曘佹洿澶氱殑CPU騫朵竴瀹氫細鎻愬崌鎬ц兘銆傚湪涓緋誨垪鐨勬祴璇曚腑錛屾ц兘涓嶤PU鐨勬暟閲忓茍涓嶆槸綰挎у闀褲傦紥涓狢PU紜疄姣斾竴涓狢PU鐨勬ц兘緲誨嶄簡錛屼絾鏄紨涓狢PU騫朵笉姣旓紥涓狢PU鐨勬ц兘緲誨嶃傚洜姝わ紝寤鴻鍦ㄥ涓弻鏍窩PU鐨勮櫄鎷熸満涓婅繍琛岋紝鑰屼笉鏄皯鏁扮殑錛旀牳CPU涓婅繍琛屻?br />
錛栥侊紪錛斾綅姣旓紦錛掍綅瑕佸揩銆傝繖涓鐐瑰緢璁╂垜鎯婂銆備笉綆″湪Solaris榪樻槸Linux涓婏紝榪愯鍦紪錛斾綅JVM涓姣斿湪錛擄紥浣岼VM瑕佸揩銆?br />
錛椼丩inux瑕佹瘮Open Solaris X86瑕佸揩銆傝繖涓鐐瑰悓鏍瘋鎴戞儕濂囥傛垜鏈潵浠ヤ負鎬ц兘搴旇鏄浉浼肩殑銆?br />
鏈緇堢殑緇撹鏄細Tapestry鍗充嬌鏄浜庝竴涓ぇ騫跺彂閲忕殑Web搴旂敤鏉ヨ涔熷凡緇忚凍澶熷揩浜嗐傚鏋滀綘鐨勫簲鐢ㄦ湁鎬ц兘闂鐨勮瘽錛岄偅涔堥棶棰樺簲璇ュ嚭鍦ㄤ綘鑷繁鏈韓鐨勪唬鐮佷笂銆?/p>
涓婅堪鏄師鏂囩殑緲昏瘧銆備笅闈㈡槸涓浜涜瘎璁猴細
Howard錛堝簲璇ユ槸Tapestry鐨勪綔鑰咃級錛歍aptestry錛曞拰Struts鐩告瘮錛屾垜璁や負宸埆搴旇鏄湪鍙嶅皠鐨勪嬌鐢ㄤ笂錛堝寘鎷湪java.bean.Introspector涓ぇ閲忕殑synchronization錛夈傚洜姝ゅ湪Struts灝嗘煡璇㈠弬鏁扮殑鍚嶇О鏄犲皠鎴怞avaBean灞炴х殑鏃跺欙紝浼氭瘮杈冭楁椂銆傝孴apestry錛曟槸涓嶄嬌鐢ㄥ弽灝勭殑錛孴apestry鍦ㄦ煡璇㈠弬鏁板拰JavaBean鐨勫睘鎬т箣闂翠嬌鐢ㄤ竴縐?#8220;棰勭紪紼?#8221;鍚戦噺緇勪歡錛屼篃璁歌繖灝辨槸涓よ咃紙Tapestry鍜孲truts錛夌殑宸埆銆傚綋鐒訛紝榪欏彧鏄寽鎯籌紝濡傛灉瑕佽瘉瀹炵殑璇濓紝鏄渶瑕佽姳璐瑰緢澶氭椂闂寸殑銆傛垜璁や負OGNL鐨勬暀璁笉鏄鍙嶅皠寰堟參錛岃屾槸鍦ㄤ簬涓涓叧閿唬鐮佷笂鐨勫簭鍒楀瓨鍙栧浜庢ц兘鐨勫獎鍝嶆槸鐩稿綋澶х殑銆?br />
鏈鍚庝竴涓皬鎻愮ず錛氭垜瑙夊緱鍦═apestry5搴旂敤涓鏋滄妸BeanModel浠嶣eanModelSource涓彧鎻愬彇涓嬈★紝鐒跺悗緇橤rid錛孊eanEditForm絳夌瓑鎻愪緵涓涓彲浠ュ瓨鍙栫殑鏂規硶錛屽皢浼氳幏寰楃浉褰撶殑鎬ц兘鎻愬崌銆傝繖鏍峰氨涓嶆槸闇瑕佹瘡嬈¢兘閲嶅緩BeanModel錛屽皢鍑忓皯鎿嶄綔鐨勬秷鑰椼?br />
jeverest錛氭垜涔熻繘琛屼簡Tapestry鐨勬ц兘嫻嬭瘯錛屽茍涓斿悓鎰廡apestry錛曠殑鎬ц兘姣旇緝浠ュ墠鐗堟湰鐨勮蹇?/p>
]]> Tapestry5.1姝e紡鍙戝竷 http://www.tkk7.com/usherlight/archive/2009/05/07/269484.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Thu, 07 May 2009 13:08:00 GMT http://www.tkk7.com/usherlight/archive/2009/05/07/269484.html http://www.tkk7.com/usherlight/comments/269484.html http://www.tkk7.com/usherlight/archive/2009/05/07/269484.html#Feedback 0 http://www.tkk7.com/usherlight/comments/commentRss/269484.html http://www.tkk7.com/usherlight/services/trackbacks/269484.html Tapestry5.1緇忚繃鏁頒釜alpha,Beta鐗堢殑闈炴寮忓彂甯冿紝浠婂ぉ緇堜簬鍦ㄤ富欏電湅鍒版渶緇堟寮忕増5.1.0.5鐨勫彂甯冦?/p>
榪欐鐨勭増鏈畻寰椾笂鏄瘮杈冭繀閫熶簡錛屼粠瀹樻柟涓婚〉涓彲浠ョ湅鍒幫紝絎竴鐗?.1.0.1鏄紥鏈堬紥錛旀棩鍙戝竷浜嗭紝鐭煭錛撲釜鏈堜笉鍒扮殑鏃墮棿錛屽彂浜嗭紨涓増鏈紝鍔ㄤ綔涓嶅彲璋撲笉榪呴熴?br />
5.1涓叿鏈変互涓嬪嚑涓柊鐗規?br />
錛戙乀apestry鐜板湪寮濮嬮噰鐢˙lackBird浣滀負JavaScript鐨勮皟璇曞伐鍏?br />
錛掋佷竴涓狝jax鐨勪簨浠惰姹傜幇鍦ㄥ彲浠ヨ繑鍥炰竴涓狹ultiZoneUpdate瀹炰緥鏉ユ洿鏂版祻瑙堝櫒涓殑澶氫釜鍖?br />
錛撱佸鎴風鏁板瓧鐨勬楠屽疄鐜頒簡鍥介檯鍖?br />
錛斻佺浉瀵逛簬5.0.18鏈夋樉钁楃殑鎬ц兘鎻愬崌錛屼富瑕佹槸欏甸潰鐨勫姞杞芥椂闂村拰欏甸潰鐨勬覆鏌撴椂闂村ぇ澶х緝鐭?br />
錛曘乀apestry鐨処oC鏈嶅姟鐜板湪鏃㈠彲浠ユ槸Advised涔熷彲浠ユ槸Decorated
錛栥乀apestry鐨勬湇鍔$幇鍦ㄥ彲浠ユ敞鍏ュ埌Spring鐨凚ean涓?br />
錛椼佸浜庢敮鎸丟zip鐨勫鎴風錛孴apestry鐜板湪鍙互鍘嬬緝榪斿洖鍖?br />
錛樸佹湁搴忕殑鍜孧apped鐨勯厤緗俊鎭幇鍦ㄥ彲浠ヨ閲嶆柊璧嬪?br />
錛欍佸睘鎬ц〃杈懼紡寰楀埌鍔犲己錛岀幇鍦ㄥ彲浠ヨ皟鐢ㄦ湁鍙傛暟鐨勬柟娉曪紝鎴栬呭垱寤轟竴涓垪琛?br />
錛戯紣銆両oC鐨勮礎鐚棦鍙互鏄被錛堣嚜鍔ㄧ敓鎴愬疄渚嬶級涔熷彲浠ユ槸鍏蜂綋鐨勫疄渚?br />
錛戯紤銆佺幇鍦ㄦ彁渚涗簡涓涓畝鍗曠殑鍙互閲嶅啓鍐呭緩鏈嶅姟鐨勬柟娉?br />
榪欓噷闈㈡渶璁╂垜鎰熷叴瓚g殑榪樻槸鎬ц兘鐨勬彁鍗囷紝涓嶇煡閬撳湪灞曠ず澶ф暟鎹噺鐨勬椂鍊欐ц兘鐨勬彁鍗囧埌搴曟湁澶氬皯錛屾湁鏈轟細涓瀹氳嫻嬭瘯涓涓嬨?
]]> Tapestry鍜孞SF姣旇緝 http://www.tkk7.com/usherlight/archive/2009/04/21/266866.html浜戣嚜鏃犲績姘磋嚜闂?/dc:creator>浜戣嚜鏃犲績姘磋嚜闂?/author>Tue, 21 Apr 2009 15:09:00 GMT http://www.tkk7.com/usherlight/archive/2009/04/21/266866.html http://www.tkk7.com/usherlight/comments/266866.html http://www.tkk7.com/usherlight/archive/2009/04/21/266866.html#Feedback 3 http://www.tkk7.com/usherlight/comments/commentRss/266866.html http://www.tkk7.com/usherlight/services/trackbacks/266866.html
鏈涓昏鐨勫師鍥犺繕鏄粠鎬ц兘涓婄殑鑰冭檻銆?
Tapestry鐨?.1鐗堢殑鏈涓昏鏀瑰姩灝辨槸鎯蟲彁鍗囨ц兘錛岃孞SF浼間箮榪樻病鏈夎繖鏂歸潰鐨勮鍔ㄣ?br />
鑰屼笖浠嶵apestry5.1鐨勭増鏈彂甯冩儏鍐墊潵鐪嬶紝鍔ㄤ綔鐩稿綋鐨勮繀閫熴傞璁inal鐗堥┈涓婂氨瑕佸嚭鏉ヤ簡銆?br />
鎹甃ewis鐨勮娉曪紝Tapestry5.0鍦ㄩ〉闈㈠唴瀹規瘮杈冨皯鐨勬椂鍊欙紝閫熷害鍑犱箮鍜岀函JSP欏甸潰涓鏍峰揩銆傚彧鏄湪灞曠ず澶ч噺鏁版嵁鐨勪細鏈変竴瀹氱殑鎬ц兘鐡墮銆?br />
鎵浠ワ紝浠栨帹鍑?.1鏉ヨВ鍐寵繖涓棶棰樸?br />
鑰孞SF鐨勫疄鐜板拰緇勪歡搴撳憟鐜頒竴縐嶇櫨鑺遍綈鏀劇殑鐘舵侊紝闅懼厤浼氭湁涓浜涜壇鑾犱笉榻愩?br />
褰撶劧澶у闇瑕侀夋嫨鍏朵腑姣旇緝濂界殑錛屼絾鏄夊瀷鏈韓灝辨槸涓浠墮潪甯稿ご鐤肩殑浜嬫儏銆?br />
鎴戦夋嫨鐨勬槸MyFaces錛婻ichFaces錛屼絾鏄垜鏌ョ湅浜哛ichFaces鐨勫湪綰緿emo鍚庯紝瀵瑰叾灞曠ず閫熷害涓嶆槸寰堟弧鎰忋?br />
涓嶇煡閬撴槸婕旂ず緗戠珯鐨勯棶棰樿繕鏄疪ichFaces鏈韓鐨勯棶棰樸?br />
涔熸榪庡ぇ瀹惰繘琛岃璁恒?br />
涓嶈繃Tapestry鐩稿JSF鑰岃█鐨勪竴涓己鐐瑰氨鏄枃妗d笉澶熶赴瀵屻傛瘯绔烰SF鏄爣鍑嗗晩銆?img src ="http://www.tkk7.com/usherlight/aggbug/266866.html" width = "1" height = "1" /> ]]>
主站蜘蛛池模板:
亚洲欧洲视频在线观看 |
亚洲国产日产无码精品 |
青柠影视在线观看免费 |
亚洲日韩中文字幕在线播放 |
中文字幕无码日韩专区免费
|
xxxxx做受大片视频免费 |
亚洲国产精彩中文乱码AV |
久久久久久毛片免费播放 |
亚洲日韩一区二区一无码 |
中文字幕亚洲电影 |
野花高清在线观看免费3中文 |
精品国产亚洲第一区二区三区 |
国产A在亚洲线播放 |
嫩草影院免费观看 |
久久福利青草精品资源站免费
|
亚洲视频人成在线播放 |
久久久久久精品免费免费自慰 |
国产成人亚洲毛片 |
91在线精品亚洲一区二区 |
亚洲AV无码乱码在线观看牲色 |
无码精品人妻一区二区三区免费看 |
亚洲精品无码不卡在线播放 |
久久亚洲精品无码 |
亚洲第一成人影院 |
我要看WWW免费看插插视频 |
国内精品一级毛片免费看 |
亚洲精品无码成人 |
亚洲日本久久一区二区va |
亚洲视频在线一区 |
久9热免费精品视频在线观看 |
亚洲视频在线观看网站 |
中文国产成人精品久久亚洲精品AⅤ无码精品
|
久久精品国产亚洲AV电影 |
亚洲午夜无码AV毛片久久 |
国产高清视频在线免费观看 |
99国产精品永久免费视频 |
亚洲精品免费在线观看 |
免费91最新地址永久入口 |
在线观看免费无码专区 |
日韩精品无码免费专区午夜不卡 |
男女猛烈激情xx00免费视频 |