Gson+Struts2 例子
该实例只是测试,其实在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实体
}
});
}