又看了下java5的标签,越来越感觉不错,
所以就实现了一个原来一直想要的Action:AbstractCmdAAction.
名字和原来的Action只多了一个A,表明里面都是用标签做的。
首先来说说原来的doXXX,其实和JUnit3.8一样,为什么JUnit与时俱进的推出了Junit4,
这个原因说的是doXXX会造成语义的混乱。
所以,我也给改了,
下面说说加的几个标签:
@init ——初始化的标签,比如:
@Init
public Page doInit(WebForm arg0, Module arg1) {
// TODO Auto-generated method stub
return null;
}
被标识的方法作为默认的处理请求方法。
@Before——Action前操作,可以标识多个方法。同时可以加入一个参数,@Before(1) @Before(2)来标识方法执行的顺序。
如果被标识的方法返回了一个Page对象,则不执行之后的@Before和Action了。
@After——Action后操作,可以标识多个方法,也能加入一个顺序。方法均执行。
@Do("name")——方法标识。其中name为easyJWebCommand标识的名字,
比如:
@Do("add")
public Page add(WebForm form, Module module) {
return new Page("edit", "/blog/albumDirEdit.html");
}
@FormPO——需要用请求中的值来初始化的对象,该标签标识Field,可以不要set方法。
该标识的对象直接使用form.toPo(xxx)。
@FormPO
private AlbumDirCommand cmd;
@Do("save")
public Page save(WebForm form, Module module) {
errors = cmd.vaild();
if (errors != null && errors.size() > 0) {
form.addResult("errors", errors);
return new Page("edit", "/blog/albumDirEdit.html");
}
AlbumDir albumDir = new AlbumDir();
com.easyjf.beans.BeanUtils.copyProperties(cmd, albumDir);
this.service.addAlbumDir(albumDir);
return this.list(form, module);
}
要使用这些只需要继承AbstractCmdAAction就可以用了,
这些标签都在该Action中处理的,没有涉及到框架本身。
还可以加入其他的比如错误处理等等。
大家帮忙看看这样设计有没有问题。