论坛首页 Java企业应用论坛

一种传递分页参数的方法

浏览 30765 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-02-28  
nihongye 写道
看来你没进过厨房帮手,老妈让我拿两根葱给她,我就拿两根.
要是按你的理论,我就应该把所有的葱都给她,然后告诉她,你是service,我是dao.


这个案例应该是这样:

妈:儿子,去给我拿两棵葱,从第四根拿。

爸:儿子,去给我拿两包烟,从第三包拿。

师:小子,去给我抄两篇课文,从第四课开始。

于是小伙子厌烦叻,它记不住这么多,只好拿本子记下:
妈(2,4) 葱
爸(2,3) 烟
师(2,4) 课文

它先跑到放葱的地方,查询笔记,发现是拿两棵,从第四根开始。
然后跑到放烟的地方,查询笔记,发现是拿两包,从第三包开始。
然后回到写字台前准备抄课文,查询笔记,发现是抄两篇,从第四课开始。
0 请登录后投票
   发表时间:2006-02-28  
打算怎么去取这个ThreadLocal 呢

在dao 或service中import   request session or ActionContext?
0 请登录后投票
   发表时间:2006-03-01  
hongliang 写道
nihongye 写道
看来你没进过厨房帮手,老妈让我拿两根葱给她,我就拿两根.
要是按你的理论,我就应该把所有的葱都给她,然后告诉她,你是service,我是dao.


这个案例应该是这样:

妈:儿子,去给我拿两棵葱,从第四根拿。

爸:儿子,去给我拿两包烟,从第三包拿。

师:小子,去给我抄两篇课文,从第四课开始。

于是小伙子厌烦叻,它记不住这么多,只好拿本子记下:
妈(2,4) 葱
爸(2,3) 烟
师(2,4) 课文

它先跑到放葱的地方,查询笔记,发现是拿两棵,从第四根开始。
然后跑到放烟的地方,查询笔记,发现是拿两包,从第三包开始。
然后回到写字台前准备抄课文,查询笔记,发现是抄两篇,从第四课开始。

赫赫,老师留作业时,通常是这样:“课后作业,135页6,7,8”。
然后老师会批改你的作业。
按照Prentice的说法,就成“明天交课后作业。”了...
0 请登录后投票
   发表时间:2006-03-01  
partech 写道

赫赫,老师留作业时,通常是这样:“课后作业,135页6,7,8”。
然后老师会批改你的作业。
按照Prentice的说法,就成“明天交课后作业。”了...


我真的觉得它说的不无道理,你想想,老师留作业后,我们在书上做好标记,回家后,脑子里想的肯定是“明天交作业”,而不是“明天交作业,135页6、7、8”这么多详细的信息。等到坐在桌前,翻开书,寻找到标记后,才知道做哪些题。。。
0 请登录后投票
   发表时间:2006-03-01  
hongliang 写道

我真的觉得它说的不无道理,你想想,老师留作业后,我们在书上做好标记,回家后,脑子里想的肯定是“明天交作业”,而不是“明天交作业,135页6、7、8”这么多详细的信息。等到坐在桌前,翻开书,寻找到标记后,才知道做哪些题。。。

恩恩,老师会说:“明天交作业,内容在你们书包里面的锦囊里,做作业前不许知道里面的内容......”
0 请登录后投票
   发表时间:2006-03-01  
作业单是怎么给学生的
怎么给才合理
0 请登录后投票
   发表时间:2006-03-01  
partech 写道
恩恩,老师会说:“明天交作业,内容在你们书包里面的锦囊里,做作业前不许知道里面的内容......”


这个倒是有点像考试叻。。。哈哈

anyway,我还是觉得楼主的方法和现有的方法不冲突,可能适用面不广,但是作为单一项目的解决方案,应该算是有创意,起码是指出叻一个新的思路。
0 请登录后投票
   发表时间:2006-03-01  
我来说一个,我认为这种做法合理的应用吧。
对于Service层调用,添加通用的参数。
比如:开发到了一半时,客户要求,每一次业务操作都需要知道操作的地址(IP地址,电话号码等),如果参数通过Service接口传递的话,就不得不改变每一个接口。考虑到还有变化的可能,可以添加一个CommonParam类,这样今后再有需要添加的字段,就往这里面放就是了。
另一种做法,就是不修改接口,象Prentice那样处理,放入某个ThreadLocal的类中。当然这也需要在Remoting当中附加新的参数。
0 请登录后投票
   发表时间:2006-03-01  
thread local说穿了,就是一全局变量.
通过全局变量传递信息的方法基本上只有别无它法的时候才可以考虑.
这个pagination就显得不太合适。

不容易单元测试,也不容易维护,另外它也影响灵活性。

比如,我要做一个DaoDecorator,它调用另外一个Dao,但是传递参数的时候把pagination对象要稍微篡改一下(比如,把从前往后变成从后往前),如果用全局变量,你要先set这个threadlocal,还要记得结束时恢复成原来的threadlocal。
或者它要调用两个其它的dao,一个传递pagination,一个不传递。
等等等等。

其实,pagination可以作为显示层的对象,到dao这一层,你可以把它翻译成为query对象的。用threadlocal,接口上虽然dao不依赖分页,实现上也要依赖,掩耳盗铃罢了。
0 请登录后投票
   发表时间:2006-03-01  
ajoo 写道
thread local说穿了,就是一全局变量.
其实,pagination可以作为显示层的对象,到dao这一层,你可以把它翻译成为query对象的。用threadlocal,接口上虽然dao不依赖分页,实现上也要依赖,掩耳盗铃罢了。


我同意不管怎么做Dao总是要对分页依赖的。我的想法是有许多情况下service的接口上出现Pagination只是为了传递给Dao,特别当系统中的许多service的接口上都有Pagination这样的参数时,觉得这样一个遍布整个系统的feature是不是可以用AOP这样的技术解决。

还有就是,我们往往在系统开始就考虑分页。如果不是这样,开发、使用后再添加分页的话,那就需要大量修改接口。这样,一个界面上的需求,就会使得整个系统的接口发生大的改变。
0 请登录后投票
论坛首页 Java企业应用版

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