`
akiraray
  • 浏览: 88404 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Vol1.话说Action

阅读更多
前言:
最近实习工作比较闲,没事便看了看xwork的源代码,并加上自己的浅薄的分析,发表成文纯属娱乐。

概要:
本篇介绍xwork的ActionSupport以及其主要接口,从接口与功能上介绍分析

xwork是webwork和struts2的核心
而action是xwork的最常用的类
所以,先从这里入手
首先看一下com.opensymphony.xwork2.ActionSupport的继承关系



其主要继承了
  • Action接口:执行逻辑代码的方法接口
  • Validateable接口:提供一个验证表单的方法接口
  • ValidationAware接口:用于接受Action执行中的类级或者字段级的错误信息并将他们入一个Map容器中
  • LocaleProvider接口:得到本地化信息的接口;
  • TextProvider接口:根据本地化配置给ActionSupport类提供文本、消息
  • Serializable接口:为什么ActionSupport需要Serializable化?


然后我们再一个一个进行分析:
1.Action接口

Action接口比较简单
主要是定义了常用的5个Result的值
分别是SUCCESS,ERROR,INPUT,LOGIN,NONE
方法只有一个
 public String execute() throws Exception;

为主要的逻辑代码入口方法,可以抛去一个系统级的异常

2.Validateable
只有一个方法,用于提供子类去实现验证表达的接口
void validate()


3.ValidationAware
接口内都是些关于FiledError和ActionError的方法
其作用便是接受字段级与类级(Action)中的错误信息并放入持有类容器中
    void setActionErrors(Collection errorMessages);
    Collection getActionErrors();
    void setActionMessages(Collection messages);
    Collection getActionMessages();
    void setFieldErrors(Map errorMap);
    Map getFieldErrors();
    void addActionError(String anErrorMessage);
    void addActionMessage(String aMessage);
    void addFieldError(String fieldName, String errorMessage);
    boolean hasActionErrors();
    boolean hasActionMessages();
    boolean hasErrors();
    boolean hasFieldErrors();

将所有方法归类为3种信息
第一种是关于ActionError,其次是FieldError还有一种便是ActionMessage

4.LocaleProvider
方法只有一个,获取本地化配置信息Locale类
  Locale getLocale();



5.TextProvider
重载了N回getText方法
其作用只有一个,通过本地化配置获取文本,应该是处理i18n的(主观臆断)

6.Serializable
为何会实现本接口,由于认知有限还没理解,初步认为是为了在pause一个action的时候在一次恢复他的状态的而使用的。而且ActionSupport重写了clone方法



关于ActionSupport自身接口
纵观ActionSupport其大部分接口都委托给了
TextProviderSupport,ValidationAwareSupport去实现接口
而在ActionSupport内自己实现的
只有用于获取本地化信息的
       public Locale getLocale() {
        ActionContext ctx = ActionContext.getContext();
        if (ctx != null) {
            return ctx.getLocale();
        } else {
            LOG.debug("Action context not initialized");
            return null;
        }
    }


与逻辑入口方法
 public String execute() throws Exception {
        return SUCCESS;
    }

还有就是验证性方法,虽然他什么都不做,需要用户去复写
 public void validate() {
    }


关于ActionSupport结构的东西就这么点,比较没有营养
其初始化的过程会在下一次进行分析
  • 大小: 22.1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics