- 导入
struts2-json-plugin.jar
- 创建
AjaxAction
类 , 这里的属性users
会存储到ValueStack
root
的栈顶
- 当请求
AjaxAction
时,该AjaxAction
对象被压入栈顶 -
Action
中携带的属性名由getXXX()
决定,而不是成员变量名决定,但一般设置为相同
public class AjaxAction extends ActionSupport {
List<User> users;
public List<User> getUsers() {
return users;
}
@Override
public String execute() throws Exception {
users = new ArrayList<>();
users.add(new User("张三","1234532"));
users.add(new User("李四","1234532"));
users.add(new User("王五","1234532"));
users.add(new User("ethan","1234532"));
System.out.println("ajax execute");
return SUCCESS;
}
}
- 在
struts.xml
中配置 action
<struts>
<package name="ajax" namespace="/" extends="json-default">
<action name="ajax" class="com.example.ajax.AjaxAction">
<result type="json">
<param name="root">users</param>
</result>
</action>
</package>
</struts>
配置详解:
-
package
的extends
属性值设置为json-default
-
result
的type
属性值 设置为json
配置后,会将valueStack
中的 root
栈顶数据变成json。
对于当前程序,栈顶数据即为AjaxAction
对象。即最终返回的json
数据是AjaxAction
对象转换而成的
例: 返回的数据如下 :
{
"users": [{
"username": "张三"
}, {
"username": "李四"
}, {
"username": "王五"
}, {
"username": "ethan"
}],
"otherProperty": "values"
}
如何只想获得AjaxAction
中指定的属性users
,并将其转换为json返回:
result
内部添加配置: <param name="root">users</param>
[{
"username": "张三"
}, {
"username": "李四"
}, {
"username": "王五"
}, {
"username": "ethan"
}]