日期:2014-05-16  浏览次数:20453 次

如何定制struts2返回json的变量

这几天和同行对程序的某些方法返回的响应时间做了讨论。从中发现有的方法只是简单的执行了一个提取session的动作就消耗了几百毫秒,所以我们查看了返回的内容,发现返回了很多不必要的变量,所以寻找了方法来解决这个问题。

?

我们绝大多数方法都使用了json类型返回,且基于注解实现。

我们的解决方法如下:1.控制json返回的变量。2,让json类型机制过滤null对象

?

1

/**
	 * 验证登陆
	 */
	@Action(value="CheckLogin",results={
			@Result(name = "json", type="json",params={"includeProperties","slogin"})
	})
	public String CheckLogin() {
		String adminid = (String) ActionContext.getContext().getSession().get(BaseTools.BACK_USER_SESSION_KEY);
		if (!adminid.isEmpty()) {
			this.setCreatorid(adminid);
			this.setSlogin(false);
			return "json";
		} else {
			this.setSlogin(true);
			return "json";
		}
	}

?params={"includeProperties","slogin"} 表示在这个方法返回时只返回slogin这个对象

?

2

/**
	 * 验证登陆
	 */
	@Action(value="CheckLogin",results={
			@Result(name = "json", type="json",params={"excludeNullProperties","true"})
	})
	public String CheckLogin() {
		String adminid = (String) ActionContext.getContext().getSession().get(BaseTools.BACK_USER_SESSION_KEY);
		if (!adminid.isEmpty()) {
			this.setCreatorid(adminid);
			this.setSlogin(false);
			return "json";
		} else {
			this.setSlogin(true);
			return "json";
		}
	}

?params={"excludeNullProperties","true"} 表示过滤掉null对象,这样可以使返回的内容减少

?

下次再说说怎么返回继承的对象吧