struts2 model-driven

二、Model-Driven(模型驱动)Action,Action通过get方法暴露一个模型类,表单字段和模型类的属性对应。 Model-Driven概念与com.opensymphony.xwork.ModelDriven接口没有直接关系的。我们的Action不实现com.opensymphony.xwork.ModelDriven接口也有可能是Model-Driven。 例如:

 
User.java 

public class User{ 
private String userName; 
private String password; 
private String email; 
...... 
get();/set();方法 
.......... 
} 

RegisterAction.java 
public class RegisterAction implements Action{ 
private User user = new User();; 

public String execute(); throws Exception{ 
//执行用户注册操作 
} 
public User getUser();{ 
return user; 
} 
} 


页面register.html中会有: 
...... 
<input name="user.userName"> 
....... 

Model-Driven会通过OGNL的表达式语言来存取数据。例如:在注册时,表达式语言user.userName将会 执行getUser.setUserName()。 那com.opensymphony.xwork.ModelDriven接口又是做什么的呢? 它会将Object getModel()取得的Model放到ValueStack中。可以理解为将这个Model的属性追加到Action中。它主要是作用是实现类似Struts的FormBean功能。 总结:如果将Model-Driven(模型驱动)Action认为是实现com.opensymphony.xwork.ModelDriven接口的观点是错误的,Model-Driven和com.opensymphony.xwork.ModelDriven接口并没有直接的关系。我们在实际应用中一般是将Model-Driven和Field-Driven结合在一起使用,并不需要将这两个概念完全区分开来。

 

一、Field-Driven(字段驱动)Action,Action拥有自己的属性,这些属性一般是Java的基本类型。表单字段直接和Action的属性 对应。

你可能感兴趣的:(html,struts,qq)