1.域模型
将某个领域的实体直接封装为一个实体对象,例如将一个用户的信息数据保存在数据库中只需要传递一个实体对象(User对象)而不需要传递多个属性。
action:
package com.kexin.action;
import com.kexin.bean.User;
public class DomainAction {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String execute(){
System.out.println(user.getName()+":"+user.getId());
return "success";
}
}
<!-- 域模型 -->
<action name="domainAction" class="com.kexin.action.DomainAction">
<result>/first.jsp</result>
</action>
数据回显(注意name属性值):
<h3>测试域模型</h3>
<div>
<s:form action="domainAction.do" method="post">
<input type="text" name="user.name"/><br/>
<input type="text" name="user.id"/><br/>
<input type="submit">
</s:form>
</div>
<div>
your name is <s:property value="user.name"/><br/>
your id is <s:property value="user.id"/>
</div>
2.驱动模型
DomainModel中要求请求参数必须指定参数对应的实体对象,所以Struts2提供了一个ModelDriven接口
action(注意user必须实例化):
package com.kexin.action;
import com.kexin.bean.User;
import com.opensymphony.xwork2.ModelDriven;
public class DrivenAction implements ModelDriven<User> {
private User user = new User();
public String execute(){
System.out.println(user.getName()+":"+user.getId());
return "success";
}
@Override
public User getModel() {
// TODO Auto-generated method stub
return this.user;
}
}
<!-- 驱动模型 -->
<action name="drivenAction" class="com.kexin.action.DrivenAction">
<result>/first.jsp</result>
</action>
数据回显:
<h3>测试驱动模型</h3>
<div>
<s:form action="drivenAction.do" method="post">
<input type="text" name="name"/><br/>
<input type="text" name="id"/><br/>
<input type="submit">
</s:form>
</div>
<div>
your name is <s:property value="name"/><br/>
your id is <s:property value="id"/>
</div>