Vol1.话说Action

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

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

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

[img]/upload/attachment/72853/4b198f05-fd32-3613-905b-4cb4d110314b.jpg[/img]

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

然后我们再一个一个进行分析:
[color=red]1.Action接口[/color]

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

public String execute() throws Exception;

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

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


[color=red]3.ValidationAware[/color]
接口内都是些关于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

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



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

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


[b][color=red]关于ActionSupport自身接口[/color][/b]
纵观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结构的东西就这么点,比较没有营养
其初始化的过程会在下一次进行分析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值