- 浏览: 1209692 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (353)
- java基础 (40)
- tapestry (16)
- gwt (14)
- ajax (7)
- linux (8)
- ubuntu (18)
- eclipse (6)
- dojo (2)
- javascript (7)
- maven (4)
- 日常生活 (29)
- web2.0 (2)
- jsonrpc (1)
- compass (1)
- lucene (0)
- spring (10)
- cluster (3)
- 数据结构 (2)
- sqlserver (1)
- tomcat (2)
- swing (1)
- servlet (1)
- hibernate (1)
- firefox (1)
- Java-Puzzlers (1)
- Wicket (2)
- mysql (10)
- windows (5)
- Webwork (1)
- struts2 (1)
- Seam (2)
- jboss (1)
- idea (6)
- 分布计算 (3)
- Python-Django (7)
- Hadoop (1)
- 工具 (3)
- Tokyo Tyrant (2)
- Comet (1)
- android (115)
- 音乐 (6)
- cxf (1)
- mqtt (1)
最新评论
-
hesai_vip:
学习了,感谢
gradlew wrapper使用下载到本地的gradle.zip文件安装。 -
imknown:
姚瑶大坏蛋 写道我也遇到了这个,用你这个方法,导致下拉刷新不起 ...
解决android-Ultra-Pull-To-Refresh下拉刷新组件中嵌套ViewPager的一个bug -
姚瑶大坏蛋:
我也遇到了这个,用你这个方法,导致下拉刷新不起作用了,你遇到过 ...
解决android-Ultra-Pull-To-Refresh下拉刷新组件中嵌套ViewPager的一个bug -
寐语者:
LeaderElection(String zookeeper ...
使用Zookeeper来为你的程序加上Leader Election的功能。 -
fyc0109:
博主, 安装了一部分还是报这个错误!FAILURE: Buil ...
gradlew wrapper使用下载到本地的gradle.zip文件安装。
我是一个tapestry的老用户。从学校毕业就开始使用tapestry。struct之类的框架都是了解但是没有实际用过。但是我对servlet的概念还是很清晰的。
最近一两天,公司叫我做一个 小东西。以前用的是tapestry4,现在知道tapestry已经到了5.0.4 pre-release了。于是下下来。按照文档中的步骤使用maven在eclipse wtp中搭好了环境,tapestry5确实感觉比在4快了不少,而且也去掉了一写繁琐的配置文件。自己也写了个简单页面测试一些组件。 ok, 搞就搞个复杂的组件 Grid。 http://tapestry.apache.org/tapestry5/screencast_5.html 这里有这个组件的演示。 看玩这个演示后觉得确实非常酷。 几下就搞好了。 但是当我想增加一个column时我确难住了。这些column是对应domian object里面的property来的。找了好久都没有找到怎样增加column的方法。看了他的component reference文档。http://tapestry.apache.org/tapestry5/tapestry-core/component-parameters.html#org.apache.tapestry.corelib.components.grid
我知道是GridColumns类负责生成Grid的head column。 但是我不知道怎样传给Grid这样一个对象。Grid 组件显得非常不灵活比起在T4中可以直接传一个String columns。 而且T5中组件非常少。没有T4中丰富的组件。而且没有T4中丰富的组件文档。 如果没有那段讲Grid的screen cast的话, 我这个T4的老手可能也不知道怎样使用。所以感觉T5还有很长的一段路要走。离象T4那样投入项目还有很久。不知道在今年秋季的时候能不能推出正式版。
很早看到过javaeye有wicket圈子,所以准备看看早的时候听过wicket。听说也是个组件模型的web框架。听说借鉴了tapestry的一些思想。。下了圈子中的wicket开发指南(感谢:idea:)。花了将近3个小时的时间把整本书看了一编。给我的第一映像就是配置比T4,甚至比T5简单得多。通过html template定位组件的位子, 然后所有的组件和组件事件的代码都写在java class中,这点跟tapestry有些不同。tapestry是将组件以html的方式提供。tapestry是使用页面池的感念,在回收页面时需要reset页面对象的状态,而wicket是将页面和状态放在session中。这点跟echo又有点象(正是因为这点,wicket跟echo成为许多人抨击的对象,认为他们不适合访问量大的项目)。tapestry也是经常需要保存状态的(@Persist 当然也可以保存在client端)。我不清楚时候wicket也需要跟tapestry一样需要reset 页面的状态。我下了wicket的例子,其中也包含了wicket-extendsion的例子。
http://sourceforge.net/project/downloading.php?group_id=119783&use_mirror=nchc&filename=wicket-examples-1.2.6-bin.zip&48720833
我被这些丰富的组件吸引了。wicket提供了比tapestry丰富得多的组件。作为一个基于component的web框架,我想组件的丰富 强大应该是判断这个组件框架级别的重要砝码。他的buildin的ajax感觉也还不错。工作中使用jsonrpc-java来开发ajax项目。也非常讨厌写那些松散的javascript代码。
通过比较感觉wicket还是值得一看的。
这样的话 为何还要使用那些stateful的框架, 不如直接用struct jsp。
我也喜欢T5更好。但就目前来讲T5离使用还有很长的一段路, 也有听说T5有些地方模仿wicket。T4其实已经很好,基本上能够解决所有的问题。
最近一两天,公司叫我做一个 小东西。以前用的是tapestry4,现在知道tapestry已经到了5.0.4 pre-release了。于是下下来。按照文档中的步骤使用maven在eclipse wtp中搭好了环境,tapestry5确实感觉比在4快了不少,而且也去掉了一写繁琐的配置文件。自己也写了个简单页面测试一些组件。 ok, 搞就搞个复杂的组件 Grid。 http://tapestry.apache.org/tapestry5/screencast_5.html 这里有这个组件的演示。 看玩这个演示后觉得确实非常酷。 几下就搞好了。 但是当我想增加一个column时我确难住了。这些column是对应domian object里面的property来的。找了好久都没有找到怎样增加column的方法。看了他的component reference文档。http://tapestry.apache.org/tapestry5/tapestry-core/component-parameters.html#org.apache.tapestry.corelib.components.grid
我知道是GridColumns类负责生成Grid的head column。 但是我不知道怎样传给Grid这样一个对象。Grid 组件显得非常不灵活比起在T4中可以直接传一个String columns。 而且T5中组件非常少。没有T4中丰富的组件。而且没有T4中丰富的组件文档。 如果没有那段讲Grid的screen cast的话, 我这个T4的老手可能也不知道怎样使用。所以感觉T5还有很长的一段路要走。离象T4那样投入项目还有很久。不知道在今年秋季的时候能不能推出正式版。
很早看到过javaeye有wicket圈子,所以准备看看早的时候听过wicket。听说也是个组件模型的web框架。听说借鉴了tapestry的一些思想。。下了圈子中的wicket开发指南(感谢:idea:)。花了将近3个小时的时间把整本书看了一编。给我的第一映像就是配置比T4,甚至比T5简单得多。通过html template定位组件的位子, 然后所有的组件和组件事件的代码都写在java class中,这点跟tapestry有些不同。tapestry是将组件以html的方式提供。tapestry是使用页面池的感念,在回收页面时需要reset页面对象的状态,而wicket是将页面和状态放在session中。这点跟echo又有点象(正是因为这点,wicket跟echo成为许多人抨击的对象,认为他们不适合访问量大的项目)。tapestry也是经常需要保存状态的(@Persist 当然也可以保存在client端)。我不清楚时候wicket也需要跟tapestry一样需要reset 页面的状态。我下了wicket的例子,其中也包含了wicket-extendsion的例子。
http://sourceforge.net/project/downloading.php?group_id=119783&use_mirror=nchc&filename=wicket-examples-1.2.6-bin.zip&48720833
我被这些丰富的组件吸引了。wicket提供了比tapestry丰富得多的组件。作为一个基于component的web框架,我想组件的丰富 强大应该是判断这个组件框架级别的重要砝码。他的buildin的ajax感觉也还不错。工作中使用jsonrpc-java来开发ajax项目。也非常讨厌写那些松散的javascript代码。
通过比较感觉wicket还是值得一看的。
评论
16 楼
dengyin2000
2007-06-11
至少wicket为wicket1留了条wicket 1.3 的后路。。
而且wicket wiki也说了怎样升级。。
T5难成气候。 至少现在离应用还有很长的路要走。 现在用T的话 还是T4比较好。 虽然效率不是很高 但确实成熟。。
不知道你说的T5的个性是什么。 pojo page component(wicket虽然需要继承WebPage。 但是其实我觉得wicket的重点是在pojo的Model上面)。 autoloaded class(这个东西我在T4也能自动load template 和 page class。wicket1已经支持。可以设定自动load的时间)。效率更高(这个确实是个问题,T4感觉很慢, 但是在可以忍受的范围内,wicket至少比T4的效率更高吧。跟T5比就不太清除了)。 少配置(wicket没有一点xml的配置文件。)
除了这些 Wicket的组建是T不能相比的。 Wicket拥有丰富而强大的组建 包括一些ajax的。 wicket是build-in支持ajax的。。编写wicket 组建跟T一样简单 好用。
大多数都说wicket会加重session的负担, 但我想如果他们深入下model的话 这个应该不是问题。 而且wicket2 1.3提供stateless page。
而且wicket wiki也说了怎样升级。。
T5难成气候。 至少现在离应用还有很长的路要走。 现在用T的话 还是T4比较好。 虽然效率不是很高 但确实成熟。。
不知道你说的T5的个性是什么。 pojo page component(wicket虽然需要继承WebPage。 但是其实我觉得wicket的重点是在pojo的Model上面)。 autoloaded class(这个东西我在T4也能自动load template 和 page class。wicket1已经支持。可以设定自动load的时间)。效率更高(这个确实是个问题,T4感觉很慢, 但是在可以忍受的范围内,wicket至少比T4的效率更高吧。跟T5比就不太清除了)。 少配置(wicket没有一点xml的配置文件。)
除了这些 Wicket的组建是T不能相比的。 Wicket拥有丰富而强大的组建 包括一些ajax的。 wicket是build-in支持ajax的。。编写wicket 组建跟T一样简单 好用。
大多数都说wicket会加重session的负担, 但我想如果他们深入下model的话 这个应该不是问题。 而且wicket2 1.3提供stateless page。
15 楼
Lincoln
2007-06-11
T5太有个性了啊,但是Wicket2.0版本和以前的跨度也是很大的啊!
为什么都不考虑兼容性呢!
为什么都不考虑兼容性呢!
14 楼
dengyin2000
2007-06-11
正在看Pro wicket这本书。 看了之后对wicket的理解更熟悉了些。
Wicket确实不错。
Wicket确实不错。
13 楼
moonfly2004
2007-05-28
希望T4的组件能更多些
12 楼
dengyin2000
2007-05-21
我喜欢Wicket是因为他的组建比tapestry的丰富得多。但是其他方面没看出比tapestry强的
11 楼
icefire
2007-05-21
Wicket,及像Swing,如果使用界面设计器,自己不用写布局等代码后,简直一样。
10 楼
dengyin2000
2007-05-20
关于Wicket的URL的问题。
可以在Application init中mount一个page或者一个package name
可以参考
http://www.javalobby.org/java/forums/t68753.html
可以在Application init中mount一个page或者一个package name
可以参考
http://www.javalobby.org/java/forums/t68753.html
9 楼
dengyin2000
2007-05-15
<div class='code_title'>Hi。 我想问问在Wicket中设置page 的URL只能通过建立多个WebApplication在web.xml中通过servlet的url的mapping来做。比如:<br/>
<br/>
xml 代码</div>
<div class='dp-highlighter'>
<div class='bar'> </div>
<ol class='dp-xml' start='1'>
<li class='alt'><span><span class='tag'><</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span>AjaxApplication</span><span class='tag'></</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span>/ajax/*</span><span class='tag'></</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span><span class='tag'></</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> </span></li>
<li class=''><span><span class='tag'><</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span>AjaxPrototypeApplication</span><span class='tag'></</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span>/prototype/*</span><span class='tag'></</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span><span class='tag'></</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> </span></li>
<li class='alt'><span><span class='tag'><</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span>RepeaterExamplesApplication</span><span class='tag'></</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span>/repeater/*</span><span class='tag'></</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span><span class='tag'></</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> </span></li>
<li class=''><span><span class='tag'><</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span>NiceUrlApplication</span><span class='tag'></</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span>/niceurl/*</span><span class='tag'></</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span><span class='tag'></</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> </span></li>
<li class='alt'><span><span class='tag'><</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span>SignInApplication</span><span class='tag'></</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span>/signin/*</span><span class='tag'></</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span><span class='tag'></</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> </span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span>StockQuoteApplication</span><span class='tag'></</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span>/stock/*</span><span class='tag'></</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'></</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> </span></li>
<li class='alt'><span><span class='tag'><</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span>SignIn2Application</span><span class='tag'></</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span>/signin2/*</span><span class='tag'></</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span><span class='tag'></</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
</ol>
</div>
<br/>
<br/>
<p>在tapestry中的方式是指定page class的packege。比如com.dengyin2000.javaeye.tapestry.pages 你的页面类和html template放在里面。 如果我想有个页面的路径是${web context}/admin/EditUser.html的话。我对应的page class就因该是com.dengyin2000.javaeye.tapestry.pages.admin.EditUser.java com.dengyin2000.javaeye.tapestry.pages.admin.EditUser.html。 我觉得tapestry中的这种规则方便很多。</p>
<p>谢谢</p>
<br/>
xml 代码</div>
<div class='dp-highlighter'>
<div class='bar'> </div>
<ol class='dp-xml' start='1'>
<li class='alt'><span><span class='tag'><</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span>AjaxApplication</span><span class='tag'></</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span>/ajax/*</span><span class='tag'></</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span><span class='tag'></</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> </span></li>
<li class=''><span><span class='tag'><</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span>AjaxPrototypeApplication</span><span class='tag'></</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span>/prototype/*</span><span class='tag'></</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span><span class='tag'></</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> </span></li>
<li class='alt'><span><span class='tag'><</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span>RepeaterExamplesApplication</span><span class='tag'></</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span>/repeater/*</span><span class='tag'></</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span><span class='tag'></</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> </span></li>
<li class=''><span><span class='tag'><</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span>NiceUrlApplication</span><span class='tag'></</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span>/niceurl/*</span><span class='tag'></</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span><span class='tag'></</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> </span></li>
<li class='alt'><span><span class='tag'><</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span>SignInApplication</span><span class='tag'></</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span>/signin/*</span><span class='tag'></</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span><span class='tag'></</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> </span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span>StockQuoteApplication</span><span class='tag'></</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span>/stock/*</span><span class='tag'></</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'></</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> </span></li>
<li class='alt'><span><span class='tag'><</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span>SignIn2Application</span><span class='tag'></</span><span class='tag-name'>servlet-name</span><span class='tag'>></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span>/signin2/*</span><span class='tag'></</span><span class='tag-name'>url-pattern</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span><span class='tag'></</span><span class='tag-name'>servlet-mapping</span><span class='tag'>></span><span> </span></span></li>
</ol>
</div>
<br/>
<br/>
<p>在tapestry中的方式是指定page class的packege。比如com.dengyin2000.javaeye.tapestry.pages 你的页面类和html template放在里面。 如果我想有个页面的路径是${web context}/admin/EditUser.html的话。我对应的page class就因该是com.dengyin2000.javaeye.tapestry.pages.admin.EditUser.java com.dengyin2000.javaeye.tapestry.pages.admin.EditUser.html。 我觉得tapestry中的这种规则方便很多。</p>
<p>谢谢</p>
8 楼
wl95421
2007-05-13
Wicket从1.3开始就开始提供Stateless功能。
应该与Tapestry相类似,但是区别还是比较大!
其实就我个人经验而言,Page占用内存并不大,服务器完全可以负担。
但相应的Model就要注意,最好不要持久化到Session,所以即使没有stateless页面,LoadModel也可以解决大部分内存占用问题。
另外1.3也开始支持多种Session持久化,如文件等。
至于T5,没有研究过,感觉它的Reset其实就是用户自行将Session中的数据放入Page,而Wicket更关注Model。
应该与Tapestry相类似,但是区别还是比较大!
其实就我个人经验而言,Page占用内存并不大,服务器完全可以负担。
但相应的Model就要注意,最好不要持久化到Session,所以即使没有stateless页面,LoadModel也可以解决大部分内存占用问题。
另外1.3也开始支持多种Session持久化,如文件等。
至于T5,没有研究过,感觉它的Reset其实就是用户自行将Session中的数据放入Page,而Wicket更关注Model。
7 楼
dengyin2000
2007-05-11
sorphi 写道
不使用tapestry的stateful特性,我主要是从下面几个方面注意:
1、属性的persist="client:form"
2、有stateful参数的组件的该值设置为false
3、不使用遗留的visit global和新的state object
暂时还没发现导致tapestry创建session的其他途径。如果谁知道还有其他途径,欢迎分享
SNA,试试javaeye的搜索?
share nothing我的理解尽量避免消耗服务器资源来保持状态吧?
1、属性的persist="client:form"
2、有stateful参数的组件的该值设置为false
3、不使用遗留的visit global和新的state object
暂时还没发现导致tapestry创建session的其他途径。如果谁知道还有其他途径,欢迎分享
SNA,试试javaeye的搜索?
share nothing我的理解尽量避免消耗服务器资源来保持状态吧?
这样的话 为何还要使用那些stateful的框架, 不如直接用struct jsp。
6 楼
sorphi
2007-05-11
不使用tapestry的stateful特性,我主要是从下面几个方面注意:
1、属性的persist="client:form"
2、有stateful参数的组件的该值设置为false
3、不使用遗留的visit global和新的state object
暂时还没发现导致tapestry创建session的其他途径。如果谁知道还有其他途径,欢迎分享
SNA,试试javaeye的搜索?
share nothing我的理解尽量避免消耗服务器资源来保持状态吧?
1、属性的persist="client:form"
2、有stateful参数的组件的该值设置为false
3、不使用遗留的visit global和新的state object
暂时还没发现导致tapestry创建session的其他途径。如果谁知道还有其他途径,欢迎分享
SNA,试试javaeye的搜索?
share nothing我的理解尽量避免消耗服务器资源来保持状态吧?
5 楼
yfmine
2007-05-11
Share Nothing Architecture...
4 楼
dengyin2000
2007-05-11
不使用stateful的特性 那你就是用hidden来保存值落。或者是开发ajax系统。我现在的一个系统用到t4 其实只是用来render初始页面而已。
SNA是什么东西?
SNA是什么东西?
3 楼
sorphi
2007-05-11
都是相互借鉴,没谁去闭门造车轮子
Echo用session?那我还是不要去看了
使用tapestry,我都不会去使用stateful的特性,现在都讲究SNA了哇
关于富UI组件的实现,我觉得tapestry的使用者应该尽量避免内置的GRID TREE等组件,应该寻找成熟的纯js控件将其由tapestry包装,tapestry只应起到提供表现数据、接受验证转换提交数据、集中维护js代码、包装良好的组件调用接口等作用。
可能是由于自己开发的web环境一直是异构环境(php java)有关,我特别在意在这样的环境下重用的问题。
Echo用session?那我还是不要去看了
使用tapestry,我都不会去使用stateful的特性,现在都讲究SNA了哇
关于富UI组件的实现,我觉得tapestry的使用者应该尽量避免内置的GRID TREE等组件,应该寻找成熟的纯js控件将其由tapestry包装,tapestry只应起到提供表现数据、接受验证转换提交数据、集中维护js代码、包装良好的组件调用接口等作用。
可能是由于自己开发的web环境一直是异构环境(php java)有关,我特别在意在这样的环境下重用的问题。
2 楼
dengyin2000
2007-05-11
林秋枫 写道
T5架构很先进,但是问题是和T4不兼容。
这从技术上说,飞跃发展是好事情。
但是从市场角度来说,又是很不好的地方。
这从技术上说,飞跃发展是好事情。
但是从市场角度来说,又是很不好的地方。
我也喜欢T5更好。但就目前来讲T5离使用还有很长的一段路, 也有听说T5有些地方模仿wicket。T4其实已经很好,基本上能够解决所有的问题。
1 楼
林秋枫
2007-05-11
T5架构很先进,但是问题是和T4不兼容。
这从技术上说,飞跃发展是好事情。
但是从市场角度来说,又是很不好的地方。
这从技术上说,飞跃发展是好事情。
但是从市场角度来说,又是很不好的地方。
发表评论
-
解决用run-jetty-run锁住css,js文件的问题。
2008-09-25 17:46 6589开发中用run-jetty-run插件启动jetty调式tap ... -
打造Tapestry5中的智能的错误页面。
2008-09-18 15:59 1778我们一般需要为生产和开发环境准备两套error page。 t ... -
T5这么多的Page Lifecycle method, 应该怎样使用?
2008-09-04 18:18 2370Tapestry5种大概有以下Page ... -
扔掉T5复杂的Grid组件,打造自己灵活的支持分页排序组件。
2008-01-03 13:12 2830Grid算是比较T5中较复杂的一个组件,我也有篇介绍Grid怎 ... -
对Tapestry的一点思考。
2007-12-27 23:33 4067Tapestry5已经开发了蛮久了。 听说最近要发布T5.0. ... -
Tapestry 5.0.5 bug, TAPESTRY-1648
2007-08-26 12:20 2606有一个domian object, 其中有个property的 ... -
T5 技巧 3:使用“t::body”进行布局。
2007-08-25 00:08 2902现在正在使用T5开发一个小项目。 因为现在T5还正处于发展中。 ... -
T5 技巧 2:为Grid组件的每一行增加“删除/修改”链接。
2007-08-21 12:35 8969现在正在使用T5开发一个小项目。 因为现在T5还正处于发展中。 ... -
T5 技巧 1:解决Form的提交乱码问题。
2007-08-21 10:58 8314现在正在使用T5开发一个小项目。 因为现在T5还正处于发展中。 ... -
T5 developing with WTP and TOMCAT
2007-08-16 09:50 2711以下是我发给tapestry右键列表的问题。 现在还没有人回复 ... -
Tapestry5中 page template不能reload。
2007-05-09 13:50 5854上午看了下tapestry5的文档,然后自己写了个简单的页面。 ... -
Tapestry Table 组件的强大(分页查询时只fetch当前页的数据)。
2006-03-01 16:00 4317导入的blog格式乱了,大 ... -
Tapestry 显示图片
2006-03-06 16:00 2746导入的blog格式乱了,请看我的msn spaces blog ... -
@Persist 解释
2006-03-08 16:00 3120a) @Persist("client") ... -
原创 Tapestry的Cache组件
2006-12-22 11:24 5059有许多页面的一部分或者这个页面是很少更新的,他们通常是由外部文 ...
相关推荐
Java Web层框架之比较—比较JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket.doc
Wicket是一个基于Java的Web开发框架,与Struts,WebWork,Tapestry类似。其特点在于对Html和代码进行了有效的分离(有利于程序员和美工的合作),基于规则的配置(减少了XML等配置文件的使用),学习曲线较低(开发...
其实从结构上看来,无论是Tapestry,ASP.Net,Wicket 估计都借鉴了Applet 平台上的WebObjects,还有Delphi。(不要忘了,Delphi 的创建者Anders Hejlsberg 就是.net 框架的架构师,所以C#和Asp.net 怎么看都带着...
Wicket吸收了Tapestry的一部分内容,但我最喜欢的就是,它是基于规则的,而并非XML配置的方式,这不仅有利于程序员学习,对系统的维护及开发规范都很有效,毕竟XML的编写并不见得就比写一段程序来得更容易。...
Enjoying Web Development with tapestry书中的源代码
Wicket 是一个 Java 语言的 Web 开发框架,与 Struts,WebWork,Tapestry 相类似。 其特点在于对 Html 和代码进行了有效的分离(有利于程序员和美工的合作),基于规则的配置(减少了 XML 等配置文件的使用),学习...
Wicket是什么 简单点说,它是一个基于JAVA的WEB开发框架,与Struts ,WebWork,Tapestry 相类似。其特点在于对Html 和代码进行了有效的分离(有利于程序员和美工 作),基于规则的配置 减少了XML等配置文件的使用 ...
Wicket是什么?简单点说,它是一个基于Java 的Web开发框架,与Struts,WebWork, Tapestry相类似。其特点在于对Html 和代码进行了有效的分离(有利于程序员和美工的合 作),基于规则的配置 ( 减少了 XML 等配置文件...
Wicket 是什么?简单点说,它是一个基于Java 的Web 开发框架,与Struts,WebWork, Tapestry 相类似。其特点在于对Html 和代码进行了有效的分离(有利于程序员和美工的合 作),基于规则的配置(减少了XML 等配置...
Wicket 是什么?简单点说,它就是一个基于Java 的Web 开发框架,与Struts, WebWork,Tapestry相类似。其特点在于对Html 和代码进行了有效的分离(有利于程序员 和美工的合作),基于规则的配置(减少了XML 等...
Rabbit 是基于 Java 的 MVC 框架。 像 Struts、Wicket、Tapestry 一样......
您会看到Shiro与Spring,Grails,Wicket,Tapestry,Mule,Apache Camel,Vaadin等框架无缝集成。 受支持 Apache Shiro是Apache Software Foundation(Apache软件基金会)的一部分,事实证明该组织的运作符合其社区...
Tapestry 优点: 一旦学会它,将极大地提高生产率 HTML模板——对页面设计师非常有利 每出一个新版本,都会有大量的创新 缺点: 文档过于概念性,不够实用 学习曲线陡峭 发行周期长——每年都有较大的升级 Wicket ...