ModelDriven

struts2之ModelDriven

喜你入骨 提交于 2019-12-01 12:49:32
可以根据Action属性的不同将它分为两类:Field-Driven(属性驱动) Action和Model-Driven(模型驱动) Action。 一、Field-Driven(属性驱动)Action,Action拥有自己的属性,这些属性一般是Java的基本类型。表单字段直接和Action的属性 对应。 二、实现了modelDriven接口可以在action中直接获得例如User对象,它会将 Object getModel()取得的User放到ValueStack中。可以理解为将这个User的属性追加到Action中。它主要是作用是实现类似 Struts的FormBean功能。 在struts2中,提供了一种直接使用领域对象的方式,就是让action实现com.opensymphony.xwork2.ModelDriven接口,ModelDriven让你可以直接操作应用程序中的领域对象,允许你在web层和业务层使用相同的对象。 ModelDriven接口只有一个方法 public Object getModel() { return null; } 该方法返回一个用于接收用户输入数据的对象模型,在这个模型对象中的属性可以直接通过(属性 名)userName来访问,而不需要使用(对象名.属 性名)user.userName这种格式来访问了

SSH框架中不为人知的细节(一)

跟風遠走 提交于 2019-12-01 12:48:58
一、 ModelDriven的运行机制 大家都知道前台表单数据向后台传递的时候,调用的Action会实现ModelDriven接口。伪码如下: VO伪码: public class User { private String userName; private String password; //setter and getter //.... } Action伪码: public class UserAction implements ModelDriven { private User user = new User(); public String addUser() { //相应的业务逻辑 } @Override public Object getModel() { return user; } } JSP伪码: <form action="xxx/user-add.action" method="post"> username:<input type="text" name="username" /> password:<input type="text" name="password" /> <input type="submit" name="submit" value="添加" /> </form> 上面的代码相信大家非常熟悉