`

Action的困惑与消息传递

阅读更多
  在实现一个个Action的时候,总是陷入困惑.因为实现ActionSupport接口的类总是非单例的,这就意味着每处理一个action请求,webwork就会生成一个该类的实例,虽然垃圾回收器的进步使性能的影响进一步减少,但如果过多的业务逻辑写到Action类里还是有可能产生大对象(这样描述可能不够确切),因为业务逻辑还是写到单例中去比较好.
  这样我们就需要在Action类里引入一个(或说聚合一个)单例的操作类进来,从而,把具体的业务逻辑转移到这个单例的类里面去.但直接与视图(界面)打交道的是Action类,为了打造友好的用户界面,你将不得不在Action里写一些提示信息如,
this.addActionError("您的帐号余额不足");
this.addActionError("请先登陆");

这些信息中有相当一部分是业务逻辑中提示出来的,如果我们把业务逻辑转移到我们新引入的操作类中,则需要这个操作类把业务逻辑中的提示信息返回给Action类,再由Action类通过ActionError返回给视图层.这样就需要制定一种约定来规范操作类和Action类之间的消息传递,并且在项目中都遵循这种规范.不知道大家在实际开发中是怎么来处理的,大家可以讨论一下.
  此外,把提示信息直接写在java的代码里也是很有弊病的,假如提示信息需要改变,就得修改class,再编译,再部署......在下真诚地希望大家说说自己的做法.
分享到:
评论
6 楼 yongyuan.jiang 2007-09-12  
服务端
this.addActionError(new NoEnoughMoneyException());  
this.addActionError(new NeverLoginException);  


异常信息在文件中去获得。

具体实现根据实际情况
5 楼 fyting 2007-09-12  
我是这样处理的:
如果在service业务流程中断时需要一些提示信息,直接抛异常,外层捕获了就好了。
如果是业务处理过程中的普通信息要输出到页面,是自己写一个MessageHolder类,把业务信息都添加到里面,在action里从这个MessageHolder取消息。看情况,有时候写成ThreadLocal的。
4 楼 差沙 2007-09-12  
我一般是自己定义一个业务异常类,可以传入errorCodes,然后用exceptionMapping来指定异常处理页面。在页面上获得errorCodes,用tag转成资源文件里的东西就OK了。

这样在action里面不用有过多的逻辑,调用service就好了,service要是有业务错误,就抛一个异常,然后就转到view了。

要是想在action里面处理service抛出的异常,catch一下就好了。
3 楼 kris_xu 2007-09-12  
资源文件是一个不错的选择。

再或就是js验证。

总结就是后台验证和前台验证,还有别的验证方法?
2 楼 boin 2007-09-11  
getText("key.name")
用自愿文件或者约定常量。
1 楼 lizhaosuper 2007-09-11  
你可以用资源文件啊然后用标签的形式来应用这样你要是想修改只需要修改资源文件就可以了啊

相关推荐

    模拟用户单击事件demo

    1. **页面跳转与URL参数传递**: - 当我们在网页上进行操作,如从A页面跳转到B页面,有时需要携带一些信息。这些信息可以通过URL参数传递。例如,A页面的链接可能是`...

    View的事件分发机制,从dispatchTouchEvent说起(一)

    相信很多人也和我一样对于这点感到非常困惑。我看了很多篇博客和书面资料。今天我们就聊聊事件的分发机制。 一、点击事件的传递规则 1、什么是点击事件(MotionEvent) 在了解点击事件的传递规则之前,我们首先要弄...

    C#委托详解.通过实例教程

    委托和事件在.NET Framework中广泛使用,但初学者可能感到困惑。委托类似于函数指针,但它遵循.NET类型系统,提供安全和类型检查。事件则是一种特殊的委托使用方式,通常用于表示对象状态的变化,允许对象向其他...

    论无效广告的成因-论文.zip

    8. **忽视品牌形象**:广告未能有效地塑造和维护品牌形象,或者品牌形象与产品特性不一致,使消费者困惑。 9. **营销策略错误**:如价格策略、促销策略等不恰当,可能削弱广告的效力,甚至产生负面影响。 10. **...

    struts2开发最小jar包

    3. **ognl.jar**:OGNL(Object-Graph Navigation Language)是用于获取和设置对象属性的表达式语言,Struts2中Action与视图间的数据传递主要依赖于OGNL。 4. **freemarker.jar**:FreeMarker是一个模板引擎,用于...

    网页Banner168个

    2. **简洁明了**:内容要简洁,信息传递要直接,避免过于复杂的设计导致用户困惑。通常,Banner上的文字不超过5-7个单词,确保一目了然。 3. **品牌一致性**:Banner设计需与品牌形象和网站整体风格保持一致,包括...

    rails 常见灵异错误汇总

    在Ruby on Rails开发过程中,开发者可能会遇到各种各样的“灵异”错误,这些错误往往令人困惑,有时甚至让人感到无从下手。Rails框架虽然强大且灵活,但其复杂性也意味着可能出现各种意料之外的问题。以下是一些常见...

    Death by PowerPoint

    3. **注意力引导行动(Attention leads to action)**:成功的演示文稿能够激发听众采取行动,无论是采纳你的建议,还是进一步讨论主题。 检查一下你自己的演讲准备:你是否对主题充满热情?你的结构是否清晰?内容...

    落地页说服力的最大杀手锏 .doc

    这种明确而集中的信息传递方式,能够有效减少用户的信息接收负担,避免因为信息过载导致的困惑和流失。 接下来,提供新信息或独到的视角对于激发用户好奇心至关重要。新信息不一定要完全原创,但通过创新的方式表达...

    最简单的ASP.NET MVC程序(初学者尤其适用)

    初学者在接触这个框架时可能会感到困惑,因为它的概念和结构与传统的ASP.NET Web Forms有所不同。本文将深入探讨ASP.NET MVC的基本原理和关键组件,帮助初学者快速理解和上手。 **1. MVC模式** MVC(Model-View-...

    php单件模式结合命令链模式使用说明

    初学者可能会对设计模式感到困惑,但通过实例学习可以帮助更好地理解这些概念。 首先,让我们简要了解一下单例模式。单例模式是一种确保一个类只有一个实例并提供全局访问点的设计模式。在PHP中,通过限制类的构造...

    KPMG全套内部培训教程(三).PPT

    4. 编写行动或信息强化的标题(action captions),确保它们既具有信息性又积极向上。 5. 多次审查,检查图形是否清晰地传达了原始信息。 6. 根据反馈进行修改和优化,可能需要多次迭代。 7. 最后一次审查,确保图形...

    六级词汇吧

    - **action**(作用): 在物理学中,作用力与反作用力是牛顿第三定律的核心概念。 - **adhere**(粘附): 材料科学中,不同材料之间的粘附性(adhesion)决定了它们能否紧密结合在一起。 - **adjacent**(毗邻的): ...

    购物车更新

    4. 回调函数:在JavaScript中,我们可以定义回调函数来处理AJAX请求的成功或失败,更新UI状态,如显示成功消息或错误提示。 5. RESTful API:服务器端通常会提供RESTful接口,如`/cart/update`,接收来自客户端的...

    flummox-demo:基本Flummox演示

    Flummox,顾名思义,起初可能让人感到困惑,但它实际上提供了一种灵活而简洁的方式来管理React组件的状态。这个"flummox-demo"项目,作为Flummox的实践教学,帮助开发者理解如何在实际项目中有效地运用Flummox。项目...

    C#进阶系列--WebApi

    2.1、自定义路由一:匹配到action ................................................................................................................. 11 2.2、自定义路由二 ....................................

Global site tag (gtag.js) - Google Analytics