ModelDriven & Preparable 接口
一、 Preparable接口
1.有prepare()方法,实现该接口的action在执行时,首先执行该方法,用于进行一些预处理。
2.创建prepareXXX方法,则在执行XXX方法前,将先执行prepareXXX方法.
二、ModelDriven接口
1.该接口实现将T类中的属性展现到action中,action中不再需要针对T类,写set,get方法
2.注意preparable与modeldriven执行顺序,必须保证getmodel在prepare之前调用。
实现了ModelDriven就必须实现getModel这个方法,该方法返回的是你的ModelDrivern泛型中设定的实体类(就是父类抽出来的公共方法中的泛型)。
其实是为了实现代码的重用,不要再定义一次你在数据访问层定义的属性了,直接用那个类就行了。
三、执行顺序:
prepare->prepareInput->input->getModel.
参照下面例子:
假设请求为:http://127.0.0.1:8080/employee_input.action
且我们的类结构如下:
BaseAction.java
public class BaseAction extends ActionSupport { }
CRUDAction.java
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable; public abstract class CRUDAction<T> extends BaseAction implements ModelDriven<T>, Preparable {
// 具体的CRUD方法抽取
CRUD Method; // 保证执行input方法时执行下面规定的prepareInput():因为方法名对应二次参数绑定拦截器
public abstract void prepareInput() throws Exception; @Override
public void prepare() throws Exception {
// 留空
} }
具体实现EmployeeAction.java
public class EmployeeAction extends CRUDAction<Employee> {
// 具体的实现CRUD , 如excute(){};save(){};delete(){};等等
CRUD Method; public String input() {} @Override
public void prepareInput() throws Exception {
// 省略其他设置// 设置查询,回显数据,在更新方法中中解决属性丢失问题} @Override
/** 驱动模型 */
public Employee getModel() {
return employee;
}
//省略其他设置
}
顺序:
1 . CRUDaction-------prepare()
2 . EmployeeAction---prepareInput()
3 . EmployeeAction---input()
4 . EmployeeAction---getModel()
ModelDriven & Preparable 接口的更多相关文章
- Struts2实现Preparable接口和【struts2】继承ActionSupport类
Struts2实现Preparable接口 实现preparable接口,实现public void prepare() throws Exception 方法.当你访问某问action指定方法之前, ...
- struts2 中 Preparable 接口实现数据准备
今天才知道struts还有Preparable接口,实现此接口需要实现其prepare()方法,调用action中其他方法之前会先调用prepare()方法.此接口和方法可以用于初始化一些数据. 测试 ...
- Struts2之ModelDriven和Preparable拦截器
首先struts.xml文件配置如下 默认拦截器设置为paramsPrepareParamsStack <package name="default" namespace=& ...
- (转)实现这两个接口ModelDriven<T>,Preparable有什么用?
转:http://www.cnblogs.com/guanghuiqq/archive/2012/08/24/2654300.html 实现了ModelDriven就必须实现getModel这个方法, ...
- 6. ModelDriven拦截器、Preparable 拦截器
1. 问题 Struts2 的 Action 我们将它定义为一个控制器,但是由于在 Action 中也可以来编写一些业务逻辑,也有人会在 Action 输入业务逻辑层. 但是在企业开发中,我们一般会将 ...
- struts2 ModelDriven 和 Preparable 拦截器
Struts2 运行流程图-1
- ModelDriven 和 Preparable 拦截器
Params 拦截器 Parameters 拦截器将把表单字段映射到 ValueStack 栈的栈顶对象的各个属性中. 如果某个字段在模型里没有匹配的属性, Param 拦截器将尝试 ValueSta ...
- Struts2 - ModelDriven 拦截器、Preparable 拦截器
开篇:拦截器在Struts中的作用 在我们的web.xml中,我们配置了一个过滤器,实现将所有请求交付StrutsPrepareAndExecuteFilter类.一旦接受到任意action的请求,该 ...
- 接触Struts2的ModelDriven<>接口
最近在学SSH框架,实战项目,用到了Struts2的ModelDriven<>接口,在这做一点记录 ModelDriven,意为模型驱动,意思是直接把实体类当成页面数据的收集对象 参考他人 ...
随机推荐
- Orace 12.2 ORA-12012: error on auto execute of job "SYS"."ORA$AT_OS_OPT_SY_21"
一个测试环境的12.2.0.1数据库后台alert不断报出以下错误信息: Errors in file /d12/app/oracle/diag/rdbms/test/test/trace/test_ ...
- Bash 中的特殊字符大全【转】
Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好 ...
- Kubernetes1.2如何使用iptables
转:http://blog.csdn.net/horsefoot/article/details/51249161 本次分析的kubernetes版本号:v1.2.1-beta.0. Kubernet ...
- GSSAPIAuthentication=no
GSSAPI ( Generic Security Services Application Programming Interface) 是一套类似Kerberos 5的通用网络安全系统接口.该接口 ...
- Extjs4.2x与富文本框编辑器KindEditor的整合
Extjs4本身的HtmlEditor编辑器,太鸡肋了,简单的html能够应付一下,稍加复杂的就无能为力了. 对于Extjs的HtmlEditor扩展主要有三个方向,一个是扩展其本身的htmlEdit ...
- vs问题集
******将获取的所有的','换成'<br/>'********** data.Data.StandardSeating.replace(/,/g,"<br/>&q ...
- Java知多少(9) import及Java类的搜索路径
如果你希望使用Java包中的类,就必须先使用import语句导入. import语句与C语言中的 #include 有些类似,语法为: import package1[.package2…].c ...
- mysql wait_timeout 8小时问题解决,tomcat数据源的配置
异常报错: 2017-02-13 09:30:17.597 [startQuertz_Worker-6] ERROR com.autoyol.task.TransStatManageTask#exec ...
- rem布局在react中的应用
摘要: 前面给大家分享了一个react项目(http://www.cnblogs.com/xiyangbaixue/p/4751904.html),这次对这个项目做了一些改进,增加了rem布局和对is ...
- [PHP] 06 - Security: Error, Exception and Filter
前言 Ref: PHP 发送电子邮件 Ref: PHP Secure E-mails PHP发邮件部分在此系列中略. 这里展开”安全“相关的部分. 有啥区别? Ref: PHP异常与错误处理机制 P ...