浏览 1813 次
|
锁定老贴子 主题:Action的困惑与消息传递
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-09-11 关键字: Action 困惑 消息
在实现一个个Action的时候,总是陷入困惑.因为实现ActionSupport接口的类总是非单例的,这就意味着每处理一个action请求,webwork就会生成一个该类的实例,虽然垃圾回收器的进步使性能的影响进一步减少,但如果过多的业务逻辑写到Action类里还是有可能产生大对象(这样描述可能不够确切),因为业务逻辑还是写到单例中去比较好.
这样我们就需要在Action类里引入一个(或说聚合一个)单例的操作类进来,从而,把具体的业务逻辑转移到这个单例的类里面去.但直接与视图(界面)打交道的是Action类,为了打造友好的用户界面,你将不得不在Action里写一些提示信息如,
this.addActionError("您的帐号余额不足");
this.addActionError("请先登陆");
这些信息中有相当一部分是业务逻辑中提示出来的,如果我们把业务逻辑转移到我们新引入的操作类中,则需要这个操作类把业务逻辑中的提示信息返回给Action类,再由Action类通过ActionError返回给视图层.这样就需要制定一种约定来规范操作类和Action类之间的消息传递,并且在项目中都遵循这种规范.不知道大家在实际开发中是怎么来处理的,大家可以讨论一下. 此外,把提示信息直接写在java的代码里也是很有弊病的,假如提示信息需要改变,就得修改class,再编译,再部署......在下真诚地希望大家说说自己的做法. 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-09-11
你可以用资源文件啊然后用标签的形式来应用这样你要是想修改只需要修改资源文件就可以了啊
|
|
| 返回顶楼 | |
|
最后更新时间:2007-09-11
getText("key.name")
用自愿文件或者约定常量。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-12
资源文件是一个不错的选择。
再或就是js验证。 总结就是后台验证和前台验证,还有别的验证方法? |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-12
我一般是自己定义一个业务异常类,可以传入errorCodes,然后用exceptionMapping来指定异常处理页面。在页面上获得errorCodes,用tag转成资源文件里的东西就OK了。
这样在action里面不用有过多的逻辑,调用service就好了,service要是有业务错误,就抛一个异常,然后就转到view了。 要是想在action里面处理service抛出的异常,catch一下就好了。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-12
我是这样处理的:
如果在service业务流程中断时需要一些提示信息,直接抛异常,外层捕获了就好了。 如果是业务处理过程中的普通信息要输出到页面,是自己写一个MessageHolder类,把业务信息都添加到里面,在action里从这个MessageHolder取消息。看情况,有时候写成ThreadLocal的。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-12
服务端
this.addActionError(new NoEnoughMoneyException()); this.addActionError(new NeverLoginException); 异常信息在文件中去获得。 具体实现根据实际情况 |
|
| 返回顶楼 | |











