我有以下代码,并且我想实现以下功能:/ getJson将以json形式返回用户对象,而/ getJson2将以Json形式返回user2。
@ParentPackage("json-default") public class JsonAction extends ActionSupport{ private User user = new User("John","Smith"); private User user2 = new User("Smith","John"); public String populate(){ return "populate"; } @Action(value="/getJson", results = { @Result(name="success", type="json")}) public String test(){ return "success"; } @Action(value="/getJson2", results = { @Result(name="success", type="json")}) public String test2(){ return "success"; } @JSON(name="user") public User getUser() { return user; } public void setUser(User user) { this.user = user; } @JSON(name="user2") public User getUser2() { return user2; } public void setUser2(User user2) { this.user2 = user2; } }
当前,无论我使用哪种方法,我仍然会得到以下结果:
{"user":{"firstName":"John","lastName":"Smith"},"user2":{"firstName":"Smith","lastName":"John"}}
可能吗?
更新:
我修改了代码:
public class JsonAction extends ActionSupport{ private User user = new User("John","Smith"); private User user2 = new User("Smith","John"); public String populate(){ return "populate"; } @Action(value="/getJson", results = { @Result(name="success", type="json",params = { "includeProperties", "user"})}) public String test(){ return "success"; } @Action(value="/getJson2", results = { @Result(name="success", type="json",params = { "includeProperties", "user2"})}) public String test2(){ return "success"; } @JSON(name="user") public User getUser() { return user; } public void setUser(User user) { this.user = user; } @JSON(name="user2") public User getUser2() { return user2; } public void setUser2(User user2) { this.user2 = user2; } }
现在我得到
{"user":{}}
和
{"user2":{}}
是的,有可能,该解决方案需要使用包含/排除参数。
以下是一个示例。
方法getJson1和getJson2显示includeParameters,而getJson3显示excludeParameters。
注意:尽管本示例使用字符串作为include / exclude参数的参数,但该字符串被解释为正则表达式。因此,我可以将action3上的“ string1,string2”替换为“ string *”。
有关更多信息,请参见:https : //cwiki.apache.org/confluence/display/WW/JSON%20Plugin
package struts2; import com.opensymphony.xwork2.ActionSupport; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; @ParentPackage("json-default") public class Test2 extends ActionSupport { private String string1 = "One"; private String string2 = "Two"; private String other = "Other"; public String getString1() { return this.string1; } public String getString2() { return this.string2; } public String getOther() { return this.other; } @Action(value="/getJson1", results = { @Result(type = "json", params = { "includeProperties", "string1" })}) public String action1() { return ActionSupport.SUCCESS; } @Action(value="/getJson2", results = { @Result(type = "json", params = { "includeProperties", "string2" })}) public String action2() { return ActionSupport.SUCCESS; } @Action(value="/getJson3", results = { @Result(type = "json", params = { "excludeProperties", "string1, string2" })}) public String action3() { return ActionSupport.SUCCESS; } }
… / getJson1 返回{“ string1”:“一个”}
… / getJson2 返回{“ string2”:“ Two”}
… / getJson3 返回{“ other”:“ Other”}