easyjweb IWebAction介绍

 

接口IWebAction是easyjweb的controller,用户可以通过重载execute方法实现所需功能。

 

public interface IWebAction {
	/**
	 * Action执行接口,在EasyJWeb中,所有的请求都会调用该方法,执行相关的数据操作。
	 * 
	 * @param form     封装了本次请求的Form数据信息
	 * @param module   本次调用的Module信息
	 * @return         显示数据的模板或直接跳转的URL
	 * @throws Exception
	 */
	public Page execute(WebForm form, Module module) throws Exception;
}
 

用户可以直接实现IWebAction接口,然后实现execute方法,如say hello示例所示,也可以继承IWebAction的实现类,在crud示例中,继承AbstractCrudAction类快速开发增删查改应用。

 

IWebAction接口的实现类分布如下包中,接下来各包中的类做些介绍:

package:com.easyjf.web.core

1.AbstractCmdAction

2.AbstractPageCmdAction

3.AbstractWizardAction

 

package:com.easyjf.web

4.Action

 

package:com.easyjf.web.tools

5.AbstractCmdAction

6.AbstractCmdAAction

7.AbstractCrudAction

8.AbstractPageCmdAction

9.CrudAction

10.RandomImgCode

11.RichComponentAction

12.ServiceCrudAction

13.WidgetAction

 

package:com.easyjf.web.ajax

14.AjaxEngineAction

 

-------------------强大的分割线-------------------------

 

1.AbstractCmdAction implements IWebAction

对Action命令进行封装的抽象类,用于为提供命令式WebAction的写法用户直接调用,可以减少书写繁锁的if语句,cmd命令del对应类中doDel或del方法。

execute(WebForm, Module)方法:

①doBefore(),如果doBefore方法返回Page对象,则直接放回

②从form中获得命令(默认为init),查找doXxx或xxx方法(参数是集合{WebForm.class,Module.class}的4个子集),获得MethodHolder对象,不存在则利用findPage(command)方法直接查找页面,无则异常,有责直接执行doAfter(f, m)方法。

③执行IActionCommandInterceptor前置拦截器,在bean中配置,如返回Page类型,则直接放回

④执行缓存处理,若命令方法有@WebCache注解,则缓存路径,如Globals.APP_BASE_DIR/html/cache/module/cmd.index(默认是index.html),如果缓存页面存在则返回,否则在ActionContext中保存uri并CacheFinishCallback(uri)用于执行回调(用于合成模板后使用),返回null

⑤若未经过缓存页面查询或查询后得到null,则执行doXxx方法

⑥执行后拦截器方法:IactionCommandInterceptor:doAfter(method)

⑦doAfter(f, m),最后返回Page对象

 

forward(String command, boolean renew)方法:

如果renew为true,表示全新的跳转,返回Page(command, getUrl(command), "html"),getUrl方法:如果是module.command形式,先分离;如果参数包含showHtmlPage,则返回module/cmd.html,否则根据url的type返回module.ejf?cmd=XX或/ejf//module/cmd/

如果command为module.command形式,则返回Page("actionJump", command, "action"),action类型的page则是重新执行一次跳转,相当于执行module.ejf?cmd=command。

保存command参数到form中,执行execute(form,module)返回一个Page。

 

go(command)==forward(command, true)

 

page(name)==module.findPage(name):查找全局页面--->在module配置中查找page--->查看默认情况DEFAULT_TEMPLATE_PATH/module.getViews()/module/name.html

 

其他方法见api Doc

 

2.AbstractPageCmdAction extends AbstractCmdAction[1]

其execute方法首先执行super.execute(),若未找到指定页面,则默认跳转到/module/command.html,更加灵活

 

3.AbstractWizardAction extends AbstractCmdAction[1]

基于向导的Action支持基类,可以保存每一步命令链,默认statusCheck为false

 

4.Action implements IWebAction

简单的IWebAction默认实现示例,返回module的defaultPage

 

5.AbstractCmdAction @Deprecated

6.AbstractCmdAAction @Deprecated

7.AbstractCrudAction extends AbstractPageCmdAction[2]

通过添删改查(CRUD)处理Action类,该类封装类crud的doXxx方法,如doList,doAdd,doDelete等,用户Action继承该抽象类类,实现指定的方法即可快速开发crud应用,如crud示例所示。默认视图页面为list.html,edit.html,详见crud示例代码。

 

8.AbstractPageCmdAction @Deprecated

9.CrudAction extends AbstractCrudAction[7]

添加改查模型的基类,实现基本的添删改查、分页等功能。该类通过子类中提供的具体的entityClass方法及getDao方法来进行工作。

子类一般的实现如下所示:

 

public class PersonAction extends CrudAction {
	@Inject(name = "personDao")
	private GenericDAO<Person> dao;

	public void setDao(GenericDAO<Person> dao) {
		this.dao = dao;
	}

	protected Class entityClass() {
		return Person.class;
	}

	public GenericDAO getDao() {
		return dao;
	}
}
 

 

10.RandomImgCode implements IWebAction

验证码图片输出

 

11.RichComponentAction extends AbstractPageCmdAction[2]

富客户端组件类?不知道怎么用

 

12.ServiceCrudAction extends AbstractCrudAction[7]

基于包含Crud操作的Service增删改查应用的基类,该类需要子类提供一个EntityCrudService才能工作。

 

13.WidgetAction extends AbstractCmdAction[1]

实用控件集合,给Web应用程序开发提供实用的控件。所有的控件调用通过这一个action来处理

有两个方法:

 

	public Page doCalendar(WebForm form, Module module) {
		return module.findPage("calendar");
	}

	public Page doLoadPage(WebForm form, Module module) {
		String url = (String) form.get("url");
		return new Page(url, url, "template");
	}
 

 

14.AjaxEngineAction implements IWebAction

处理远程脚本调用的Action引擎,ajax引擎配置文件com.easyjf.web.easyjf-web.xml

 

ajax下载文件/ejf/easyajax/engine.js以及ajax调用方法/ejf/easyajax/ajaxCall

 

doAjaxCall(WebForm, Module):

调用ajax方法是:uri为/ejf/easyajax/ajaxCall

form中的参数:

scriptName Ajax服务bean名

easyJWebCommand ajaxCall

ajax-call-p0.java-type 参数1类型

ajax-call-p0.value 传入参数1

methodName 指定方法

remoteCallId 5836_1281253848078

 

通过RemoteCall.execute执行ajax调用。

你可能感兴趣的:(DAO,Web,Ajax,bean,webform)