精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-21
按照楼主的情况还是考虑用sturts2 interceptor吧,现实往往是残酷的。
|
|
返回顶楼 | |
发表时间:2007-11-21
colin4k 写道 action当然不应该封装业务逻辑,但是action是controller,比如在
一个action里面可能会由几个Business Service的方法组成一个流程, 如果仅对service的方法实现事务控制,那如果流程中某一个service 的方法出现了问题,流程中之前调用的其他service怎么回滚呢。 两种可能: 1.您的需求确实很复杂,需要这么实现. 2.您没有弄清楚为什么在dao层上面有个service层,service层是干什么用的,于是把service层当dao.又在上面套了一层,很不幸的把action控制层当成了它. |
|
返回顶楼 | |
发表时间:2007-11-21
在action里调用 service1(),service2()..
这种情况不就是在action里写了业务逻辑了吗,为什么要先调用service1后service2,一个次序,service2也许还要使用service1返回的结果做参数? 这不就是业务逻辑吗/. |
|
返回顶楼 | |
发表时间:2008-03-21
你可以action里调用一个service(),service()里封装了,你要操作的service1,service2,然后对service()加事务的操作!
|
|
返回顶楼 | |
发表时间:2008-03-21
很奇怪楼上这么多位居然从来不复用Action吗?
虽然Action本身没有很多的逻辑,但是能简单责简单,既然有了现场的功能就不需要另外开发了,在已经有了A,B两个功能后,用户提出了在某些时候操作完A后会立即使用A的数据操作B,但是来回切换太麻烦,因此要求将A和B另外组成一个界面,但是后台的逻辑没有任何改变,在这个背景下我们发现通过ActionChainInerspector可以完成这个功能,而且所作的改变仅仅是重新根据A的view和B的view合成一个新的View(当然还需要加上事务控制也就是楼上诸位在讨论的东西),我想使用Webwork的极致就是这样了吧,这也是我们一直苦苦追求的高度复用,webwork的确不愧是一个框架时代的终结者。 |
|
返回顶楼 | |
发表时间:2008-03-21
再多补充一点,当Action层切分的足够细,足够原子,就会发现把他们进行组合复用其实是非常简单,非常的合乎自然语法,例如将一个又一个的对象在页面间甩来甩去,任意的对他们进行糅合,多么奇妙的体验,感觉离程序员追求的终极目标又更近了一步。
|
|
返回顶楼 | |
发表时间:2008-03-30
我不知道你为什么要在Action进行事务处理,不过从分层编码的要求来说,你这种做法是很不合理的。
你应该把事务控制交给Spring进行管理。 Spring进行事务管理根本不会像你说的那样没有办法用,你只用把Spring的Bean注入进来就可以速正常进行使用啦。 |
|
返回顶楼 | |
发表时间:2008-04-03
加 spring 做,,很爽
|
|
返回顶楼 | |
发表时间:2008-04-04
action里当然不应该有业务逻辑和事务控制,原因很简单,action里import了http相关的类,和协议绑定了,如果在action里放业务逻辑和事务控制的话,非http的请求就不能复用业务逻辑和事务控制功能了,所以中间再加一层是对的。
比较好的方法是在action里创建一个工厂,由工厂创建一个Handler,将httprequest里的数据转换成一个和协议无关的通用数据结构,传递给Handler,使用哪个工厂和具体Handler实现,在xml里配置就可以了。 然而Handler里可以仍然没有业务逻辑和事务控制,它只是个代理或外观模式,作用是做BO的缓存,并提供一些管理功能,如交易统计、访问日志、服务的开关、错误处理等,它调用的service可能是访问本地文件、数据库、邮件系统、外部系统、异步调用等等 |
|
返回顶楼 | |
发表时间:2008-04-12
在action层调用service层逻辑,在service层进行事务控制
|
|
返回顶楼 | |