要添加到 Ashish 的答案,即在添加 struts2-json-plugin 之后。
我喜欢在可能的情况下使用 struts2-conventions-plugin,因为我的 struts.xml 中只有很少的内容,并且更喜欢使用大部分注解。
要让您的操作在使用约定时返回 json,有两个步骤:1) 让您的操作使用 json-default 包,2) 将操作定义为具有 json 结果类型。
JSON 注释示例
package org.test.action;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
@ParentPackage("json-default")
@Result(type = "json")
public class JsonTest extends ActionSupport{
private String name = "Hello World";
private String language = "Java, I mean English";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
}
有时值比原始值更复杂,您可能希望修剪返回的 json,或者有时您希望将多个操作放入一个类中(有时您会得到一个复杂的结构,并通过某些方式修剪它可以使您的在客户端上工作更容易)。为此,我们使用包含或排除参数。
排除语言示例
将上面的结果注解修改为:
@Result(type = "json", params = {
"excludeProperties",
"language"})
实现上述目标的另一种方法是明确声明我们想要的属性:
@Result(type = "json", params = {
"includeProperties",
"name"})
示例使用带排除参数的通配符
未提供动作代码,适合修剪复杂对象
@Result(type = "json", params = {
"excludeProperties",
"punches.*.punchesCollection, *.punchesCollection.*"})
您可以看到,使用插件比使用 xml 或注释方法更容易。