struts2中的ModelDriven使用

struts2中的ModelDriven使用

例子都为struts2中的文档例子

JSP提交数据:
 
<s:form action="modelDrivenResult" method="POST" namespace="/modelDriven">
<s:textfield label="Gangster Name" name="name" />
<s:textfield label="Gangster Age" name="age" />
<s:checkbox label="Gangster Busted Before" name="bustedBefore" />
<s:textarea cols="30" rows="5" label="Gangster Description" name="description" />
<s:submit />
</s:form>

根据数据提交的action,和namespace,修改struts.xml的内容

添加下面配置到struts.xml
 
<package name="base2" namespace="/modelDriven" extends="struts-default">
<action name="modelDrivenResult" class="ModelDrivenAction">
<result>/Hello.jsp</result>
</action>
</package>

 然后添加处理数据的action,这里使用ModelDriven的方式。该action继承ModelDriven接口,实现getModel()方法,方法只返回一个模型对象,默认转换Object。只要改模型对象提供的方法和提交数据的name属性对应,struts2就能自动把数据赋给模型对象,最后对象提供各种get方法把数据存放在值栈,传递到Hello.jsp。

处理的action,返回模型对象Gangster。
 
public class ModelDrivenAction extends ActionSupport implements ModelDriven {
public String execute() throws Exception {
return SUCCESS;
}
 
public Object getModel() {
return new Gangster();
}
}

 

模型类
 
public class Gangster implements Serializable {
private String name;
private int age;
private String description;
private boolean bustedBefore;
 
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isBustedBefore() {
return bustedBefore;
}
public void setBustedBefore(boolean bustedBefore) {
this.bustedBefore = bustedBefore;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

最后Hello.jsp中可以使用<s:property value=".."/>取值,value直接使用相应的age,name等。而action虽然提供的getModel()方法,但因为转为了Object,而Object不能提供取值的方法,所以无法使用value="model.xxx"来取值。

posted on 2012-08-29 09:52  Eleven_Niu  阅读(162)  评论(0编辑  收藏  举报