1. 必須的包,一個不能少!!
json-lib-2.3-jdk15.jar
struts2-json-plugin-2.3.3.jar
commons-beanutils-1.8.3.jar,
commons-collections-3.2.1.jar,
commons-logging-1.1.1.jar,
commons-logging-1.1.1.jar,
ezmorph-1.0.6.jar (缺少此包的話,容易導致奇怪問題,如執行中途跳出等)
2. struts.xml中
<!-- 此處要繼承一個預設的空間json-default --><package name="jsonDemo" extends="json-default"><action name="jsonAction" class="action.JsonDemo"><!-- 傳回型別 是json --><result type="json"><!--name必須為root,result是Action中的要返回給前台的屬性名稱 --><param name="root">result</param></result></action></package>
3. Action的代碼
public class JsonDemo implements Action {// 用於傳遞資料的屬性private String name;private String result;private Muer mm;public String execute() throws Exception {// TODO Auto-generated method stubSystem.out.println("action");mm = new Muer();mm.setAge("20");mm.setName(name);mm.setLevel("very beautiful");System.out.println("age" + mm.getAge() + " name:" + mm.getName()+ " level:" + mm.getLevel());JSONObject obj = JSONObject.fromObject(mm);result = obj.toString();System.out.println("JSON字串為:" + result);return SUCCESS;}
//略去各個屬性的getter 和setter方法}
4. jsp 頁面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <script type="text/javascript" src="js/jquery.js" ></script> <title>struts2 ajax json demo1</title><script type="text/javascript"> $(document).ready(function(e) { $("#btn").click(function(e) {var name = $("#name").val(); $.post("jsonAction.action",{name:name},function(data){var mm = eval("("+data+")");alert(mm.name);alert(mm.age);alert(mm.level);},"json"); }); }); </script> </head> <body> <s:textfield name="name" id="name" theme="simple"/> <s:submit id="btn" value="showJson" theme="simple" /> </body></html>
總結一下,要注意幾個地方
1. 包一個都別少...
2. 送action傳回的資料要做一次處理 var mm = eval("("+data+")");
3 . 可以用擷取屬性的方式調用eval處理之後的對象 mm.name
補充下: struts2使用json傳遞List集合到前台頁面:
//擷取公司對應的庫位 ajaxpublic String getLgortByBukrs(){try {//System.out.println(bukrs); //此處通過Service類擷取一個List集合List<T001L> lgortList = t001lServices.getLgortByBukrs(bukrs); //將List集合轉換為JSONArray對象JSONArray jArray = JSONArray.fromObject(lgortList); //轉換為json串result = jArray.toString();//System.out.println(result);return SUCCESS;} catch (Exception e) {e.printStackTrace();}return null;}