在Struts2中数据转化为域对象是通过param拦截器自动进行的。
你仅仅需要创建一个域对象做为一个javabean的属性并且实现相应的setter和getter方法。
框架会自动初始化域对象并且传输表单数据。下面是示例。
UserAction代码:
package com.zcl.struts.domain;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private User user ;
public UserAction() {
}
public String execute(){
return SUCCESS ;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
要引用user的属性像名字,年龄等我们首先需要取得user对象然后获得他的属性。在Action里如果你要取得user的年龄,那么需要如下代码:
getUser().getAge();
User类如下:
package com.zcl.struts.domain;
public class User {
private String name ;
private int age ;
private String sex ;
private String[] hobby ;
private String country ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
在jsp页面,user属性不能直接被引用。我们需要使用下面的形式:
name="user.age"
index.jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Domain Object as JavaBeans Property</title>
</head>
<body>
<h2>domain object as javabean property</h2>
<hr/>
<table>
<s:form action="UserAction">
<s:textfield name="user.name" label="User Name" /><br/>
<s:textfield name="user.age" label="User Age" /><br/>
<s:radio name="user.sex" label="Sex" list="{'Male','Female'}" /><br/>
<s:checkboxlist name="user.hobby" label="Hobby" list="{'Music','Art','Football'}" /><br/>
<s:select name="user.country" label="Country" list="{'Select','China','USA','France'}" /><br/>
<s:submit></s:submit>
</s:form>
</table>
</body>
</html>
success.jsp显示提交结果:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>domain</title>
</head>
<body>
<h3>The success page</h3>
<hr/>
User Name :<s:property value="user.name"/><br/>
Age :<s:property value="user.age"/><br/>
Sex :<s:property value="user.sex"/><br/>
Hobby :<s:property value="user.hobby"/><br/>
Country:<s:property value="user.country"/><br/>
</body>
</html>
配置struts.xml文件
<package name="domain" extends="struts-default">
<action name="UserAction" class="com.zcl.struts.domain.UserAction">
<result>/success.jsp</result>
</action>
</package>
执行结果:
提交结果: