Tapestry5.2的新變化
Posted on 2010-08-18 07:13 云自無心水自閑 閱讀(1077) 評(píng)論(0) 編輯 收藏 所屬分類: Java 、心得體會(huì) 、TapestryTapestry開發(fā)小組中的一個(gè)成員的blog中記錄了5.2版本帶來的新變化
1、增強(qiáng)了class reload的功能(我個(gè)人也認(rèn)為這一點(diǎn)是5.2版本最令人激動(dòng)的改進(jìn)),以前Tapestry和其他的web框架類似,修改頁面不需要重新啟動(dòng)application server, 但是修改了類之后,必須重新啟動(dòng)應(yīng)用服務(wù)器才行。但是在Tapestry5.2中,對(duì)這一點(diǎn)進(jìn)行了修改,如果只改變了接口的實(shí)現(xiàn)類,而不改變接口的方法簽名,就不需要重新啟動(dòng)應(yīng)用服務(wù)器
2、新增了若干個(gè)組件,比如:Error和Trigger。
Error和原有的Errors類似,但是Error用于給指定的組件顯示驗(yàn)證錯(cuò)誤信息。
Trigger提供了在瀉染頁面過程中觸發(fā)任務(wù)事件的功能,常常用于通過RenderSupport來給頁面添加JavaScript代碼
3、新的插件(Mixin),包括RenderClientId, RenderNotification
4、集成了JSR-303 Bean的驗(yàn)證,現(xiàn)在可以在頁面中使用JSR-303標(biāo)準(zhǔn)的注解來給字段指定需要的驗(yàn)證
5、新的注解,包括@Contribute,@RequestParameter, @ActivationRequestParameter, 使用后兩個(gè)注解能很容易地獲取request中的參數(shù)
6、新的頁面生命周期事件:pageReset
7、鏈接修飾過程中的新事件: decoratePageRenderLink, decoreateComponentEventLink
8、頁面解析器的更換,原來使用StAX,造成了對(duì)Google App Engine和對(duì)OSGI的不兼容,5.2版本中使用了標(biāo)準(zhǔn)的SAX解析器
9、頁面緩沖池的廢除(我認(rèn)為這是5.2版本的一個(gè)相當(dāng)大而且也是非常重要的一個(gè)變化,我認(rèn)為頁面緩沖池技術(shù)是tapestry學(xué)習(xí)曲線陡峭的一個(gè)重要原因),5.2版本中所有頁面將只有一個(gè)實(shí)例(也就是lewis howard說的單例化),頁面屬性的值將會(huì)在每個(gè)線程中使用一個(gè)Map來保存。這樣一個(gè)頁面實(shí)例可以在多個(gè)線程中使用,而不會(huì)有同步問題。
但是,由于這是一個(gè)新的嘗試,所以lewis也不確定這樣做的效果是否很好(詳見:http://tapestryjava.blogspot.com/2010/07/everyone-out-of-pool-tapestry-goes.html)所以,在5.2中可以通過配置恢復(fù)頁面緩沖池的使用。
1、增強(qiáng)了class reload的功能(我個(gè)人也認(rèn)為這一點(diǎn)是5.2版本最令人激動(dòng)的改進(jìn)),以前Tapestry和其他的web框架類似,修改頁面不需要重新啟動(dòng)application server, 但是修改了類之后,必須重新啟動(dòng)應(yīng)用服務(wù)器才行。但是在Tapestry5.2中,對(duì)這一點(diǎn)進(jìn)行了修改,如果只改變了接口的實(shí)現(xiàn)類,而不改變接口的方法簽名,就不需要重新啟動(dòng)應(yīng)用服務(wù)器
2、新增了若干個(gè)組件,比如:Error和Trigger。
Error和原有的Errors類似,但是Error用于給指定的組件顯示驗(yàn)證錯(cuò)誤信息。
Trigger提供了在瀉染頁面過程中觸發(fā)任務(wù)事件的功能,常常用于通過RenderSupport來給頁面添加JavaScript代碼
3、新的插件(Mixin),包括RenderClientId, RenderNotification
4、集成了JSR-303 Bean的驗(yàn)證,現(xiàn)在可以在頁面中使用JSR-303標(biāo)準(zhǔn)的注解來給字段指定需要的驗(yàn)證
5、新的注解,包括@Contribute,@RequestParameter, @ActivationRequestParameter, 使用后兩個(gè)注解能很容易地獲取request中的參數(shù)
6、新的頁面生命周期事件:pageReset
7、鏈接修飾過程中的新事件: decoratePageRenderLink, decoreateComponentEventLink
8、頁面解析器的更換,原來使用StAX,造成了對(duì)Google App Engine和對(duì)OSGI的不兼容,5.2版本中使用了標(biāo)準(zhǔn)的SAX解析器
9、頁面緩沖池的廢除(我認(rèn)為這是5.2版本的一個(gè)相當(dāng)大而且也是非常重要的一個(gè)變化,我認(rèn)為頁面緩沖池技術(shù)是tapestry學(xué)習(xí)曲線陡峭的一個(gè)重要原因),5.2版本中所有頁面將只有一個(gè)實(shí)例(也就是lewis howard說的單例化),頁面屬性的值將會(huì)在每個(gè)線程中使用一個(gè)Map來保存。這樣一個(gè)頁面實(shí)例可以在多個(gè)線程中使用,而不會(huì)有同步問題。
但是,由于這是一個(gè)新的嘗試,所以lewis也不確定這樣做的效果是否很好(詳見:http://tapestryjava.blogspot.com/2010/07/everyone-out-of-pool-tapestry-goes.html)所以,在5.2中可以通過配置恢復(fù)頁面緩沖池的使用。