论坛首页 Java企业应用论坛

请教一个关于DirectLink的使用问题,麻烦各位看看,谢谢

浏览 6917 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-10-12  
可能我没更清楚的描述我的问题

先说URL长度的问题,我google了一下,应该是跟webserver的配置有关。
http://www.microsoft.com/china/technet/prodtechnol/isa/2004/plan/httpfiltering.mspx

我还是认为,过长的URL,不应该鼓励


再纠正你的小BUG:

>>如果是xxxLink,都是以post方式传递的

不是的。凡是翻译成为 <a href-"">xxx</a>的XXXLink组件,都是GET方式的HTTP请求。

>>那么你所说的GET方式,也就是以Form形式提交的时候

<form  method="GET/POST">来决定HTTP请求方式。tapestry默认的form组件都是post方式


再回到我说的tapestry的这个问题:

某个页面有个persist="client"的属性,那么

1、若有form组件,form里面有个hidden域是state:CurrentPageName=XXX(persist对象的序列化数据,长度与persist对象的大小有关)


2、若有这样的Link组件,比如DirectLink,其listener参数为该页面的某个监听方法,则会在生成的url中加入state:CurrentPageName=XXX参数。


tapestry通过以上策略将该页面的persist属性在服务端和客户端之间相互传递。


可以猜想,若persist属性的对象够大,而link因为加上了过长的参数名/值对,其请求被某种url限制的web server配置所阻挡。


我想若PAGE中没有这样的link组件,是可行的。比如PageLink,生成的<a href="">是不带这些参数的。


我想还是应该注意一下persist="client"的属性,不要滥用了为好。
0 请登录后投票
   发表时间:2005-10-12  
唉,今天丢大丑咯。。。不好意思,我记反咯,唉。。。 一年多没写过JSP,从来没有关心过这种问题。。。丢脸丢脸  反省反省

引用
再回到我说的tapestry的这个问题:

某个页面有个persist="client"的属性,那么

1、若有form组件,form里面有个hidden域是state:CurrentPageName=XXX(persist对象的序列化数据,长度与persist对象的大小有关)


2、若有这样的Link组件,比如DirectLink,其listener参数为该页面的某个监听方法,则会在生成的url中加入state:CurrentPageName=XXX参数。


tapestry通过以上策略将该页面的persist属性在服务端和客户端之间相互传递。


关于这点,我想我们说的都差不多是一个意思。


引用
可以猜想,若persist属性的对象够大,而link因为加上了过长的参数名/值对,其请求被某种url限制的web server配置所阻挡。


我想若PAGE中没有这样的link组件,是可行的。比如PageLink,生成的<a href="">是不带这些参数的。


我想还是应该注意一下persist="client"的属性,不要滥用了为好。

其实关于这点,我认为你实际上已经说到点子上了。因为不论是你说的WebLogic或者ISA Server,都是webserver的问题,而不是Tapestry本身的问题。为什么我不会有你的这种顾虑呢?因为我们作为项目开发者本身,也就有对webserver的选择和设置权利。如果你一定要设置ISA Server的HTTP 筛选器和 URLScan对Tapestry的“长URL”进行过滤或者筛选,那么我也就没有什么可以多说的了。对吧?
引用
Internet 上的客户端访问通过 ISA Server 计算机发布的 Web 服务器上的 HTTP 对象。该访问由 ISA Server Web 发布的规则控制,使用 HTTP 筛选器可将 HTTP 策略应用于这些规则。
0 请登录后投票
   发表时间:2005-10-13  
我也经常记不住东西,要不总是临时google呢,:)

总之我们是对tapestry的这个特性的认识是差不多了


gzdlw 写道
都是webserver的问题,而不是Tapestry本身的问题。为什么我不会有你的这种顾虑呢?因为我们作为项目开发者本身,也就有对webserver的选择和设置权利。


关于这点,我还想说说,一则是俺作为程序员的权利其实也没那么大,二则是俺不会把任何框架或技术放在非他不可的地位。项目中,“变态”的东西多着呢。

说点跟上面讨论无关的题外话,tapestry,我感觉现在他还是很自成体系(换个说法应该是比较封闭的)。举个例子来说,现在为止,我还没想到一个比较好的办法,让tapestry做成的组件(ie: LoginPanel)能在某个静态的页面中嵌入(不使用iframe等)。如果是其他的web框架,我想是可以的,js嘛,关键是<form action="processURL">而已。Tapestry呢?  顺便也就这个请教你和其他已经解决了这个问题的朋友们。
0 请登录后投票
   发表时间:2005-10-13  
引用
关于这点,我还想说说,一则是俺作为程序员的权利其实也没那么大,二则是俺不会把任何框架或技术放在非他不可的地位。项目中,“变态”的东西多着呢。

可能我们这里比较“松活”一点吧,只要我能够有合理的论据说服团队,那么我想怎样做都可以。。。。有时候客户也会指定服务器配置,比如非要用webLogic,不过,具体的详细配置,通常客户到未必精通。其实我们自己配置服务器也就一个标准而已:运行效率。

其实我也并没有“非他不可”的意思啦,这还是要看团队的具体技术方向。比如我们的开发一部,就喜欢JSP,前两天才把我踢出他们开发的项目,因为他们觉得在项目紧张的时候,对JSP就是有把握。。。呵呵,对此我到觉得无所谓,难得轻闲一下嘛。呵呵。。。跑题跑题。。~~~

引用
现在为止,我还没想到一个比较好的办法,让tapestry做成的组件(ie: LoginPanel)能在某个静态的页面中嵌入(不使用iframe等)。

如果我没有理解错的话,你应该是想在脱离tapestry框架范围之外调用tapestry组件,是这个意思吧?那你得自己写个解析器来解析你静态页面上关于tapestry组件的描述。。。

其实我反而有个问题;是不是你的某种功能一定得要求在tapestry框架之外调用tapestry组件?如果在tapestry框架之内就无法实现你的功能?

要不你就把你所需要的功能写出来,或许我有其他的实现方式。

其实每种技术都有其局限性,并非万能。。。只能说,我们选择技术的时候,扬长避短,我用tapestry也遇到过让我非常“无奈”的情况,甚至不得不用一些“更麻烦”的方式,但是衡量一下得失,还是觉得tapestry带给我的“便利”要“麻烦”多得多。
0 请登录后投票
   发表时间:2005-10-13  
引用

如果我没有理解错的话,你应该是想在脱离tapestry框架范围之外调用tapestry组件,是这个意思吧?


对头啊,呵呵

不考虑性能,我可以决定tapestry贯串整个项目,每个web页面都是.page。问题是我得考虑一些静态页面,比如首页,或其他访问量很大的页面,我只考虑用html静态页面。问题就是这些静态页面上,同样也有应用程序的组件的影子。或许等t4.1的静态页面功能(?)出来或许可以解决?
0 请登录后投票
   发表时间:2005-10-13  
对于首页呢,其实Tapestry之所以有一个单独的HomeService,就是基于你这种考虑,你的问题,Howard早就已经考虑到了,你可以查查官方对HomeService的解释。。。。。。所以我觉得你大可放心交给Tapestry处理。

当然,使用框架,不论框架本身再怎么优化,肯定比不优化要慢。不过嘛,还是要看得与失的取舍了。。。:)
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics