kane 2012-11-10
该实例只是测试,其实在action中,不需要一个user的全局变量(为了接收ID,懒得再去声明一个变量),
这样会破坏了Gson的原则,可以放到execute方法中。
gson包的下载地址:
http://code.google.com/p/google-gson/downloads/list
放到lib文件夹中。
struts.xml配置:
<action name="gsonaction" class="com.action.gson.GsonAction"> </action>
所属的包,没有必要继承自json-default
struts2 action 代码:
@Controller public class GsonAction extends ActionSupport { @Resource private IUserDao iud; private Users user; public Users getUser() { return user; } public void setUser(Users user) { this.user = user; } public String execute() { Integer uid = user.getUserid();// 获取JSP页面中select列表的传递过来的用户ID this.user = iud.findById(uid);// 根据用户的ID获取用户实体 Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); String res = gson.toJson(this.user); HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("application/json;charset=utf-8"); try { PrintWriter out = response.getWriter(); out.print(res); out.close(); } catch (IOException e) { e.printStackTrace(); } return null; } }
JSP 页面部分代码(使用jQuery):
function getgsoninfo() { var val = $("#person").val();//获取选中的用户ID $.ajax( { type:"post", url : "gsonaction.action",//action的地址 data : "user.userid=" + val, success : function(data) { alert(data.username);//弹出用户名,data为返回的user实体 } }); }
.create();String param = "xxxxxxx";Map<String, Map<String, List<MpAppInfo>>> inParams = gson.fromJso