`

Struts2+jQuery+Ajax

 
阅读更多

一个简单的Json实例,采用Struts2 + jQuery1.4.js +ajax

主要做法是在后台action中把List集合手动转成json格式的数据,然后,到前台页面显示。 也可以通过json插件的方式把Map集合转成json.  主要用到了struts2的核心包 +json-lib-2.1.jar ,jsonplugin-0.34.jar等等。 

package org.test.action;
import net.sf.json.JSONObject;
public class AjaxLoginAction extends ActionSupport {
	private static final long serialVersionUID = 8955525425647194202L;
	// 用户Ajax返回数据
	private String result;
	private String loginName;
	private String password;
        //getter 和setter方式省略;

	@Override
	public String execute() {
		// 用一个Map做例子
		Map<String, String> map = new HashMap<String, String>();

		// 为map添加一条数据,记录一下页面传过来loginName
		map.put("name", this.loginName);
		map.put("password",this.password);

		List<Person> listPersons = new ArrayList<Person>();
		Person person1 = new Person();
		person1.setAddress("株洲");
		person1.setId("100");
		person1.setName("张三");
		
		Person person2 = new Person();
		person2.setAddress("长沙");
		person2.setId("200");
		person2.setName("李四");
		listPersons.add(person1);
		listPersons.add(person2);
		
		//将要返回的map对象进行json处理
		JSONObject jo = JSONObject.fromObject(map);
		
		//传把list集合转成json格式;
		String json = listConvertJson(listPersons);
		
		//调用json对象的toString方法转换为字符串然后赋值给result
		this.result = json;

		System.out.println(this.result);
		return SUCCESS;
	}
	
	/**
	 * list转成Json格式;
	 * @param list
	 * @return
	 */
	public String listConvertJson(List<Person> list){
		StringBuffer sb = new StringBuffer();
		sb.append("[");
		for(int i =0;i<list.size();i++){
			sb.append("{");
			sb.append("\"name\":").append("\""+list.get(i).getName()+"\"").append(",");
			sb.append("\"address\":").append("\""+list.get(i).getAddress()+"\"").append(",");
			sb.append("\"id\":").append("\""+list.get(i).getId()+"\"");
			sb.append("}");
			if(list!=null && list.size()>0 && list.size()-1 != i){
				sb.append(",");
			}
		}
		sb.append("]");
		return sb.toString();
	}
}

 转成json格式为:

[{"name":"张三","address":"株洲","id":"100"},{"name":"李四","address":"长沙","id":"200"}]

其中“[]”代表的是数组,“{}”代表的是具体的对象。

然后前台javascript使用如下方式解析即可:

var member = eval("("+data+")");	//包数据解析为json 格式  
for(var i = 0;i<member.length;i++){
	alert(member[i].name+","+member[i].id+","+member[i].address);
}

  

分享到:
评论
1 楼 sk1941qq 2014-01-14  
JSONObject jo = JSONObject.fromObject(map);   这句你根本没用到呢~

相关推荐

Global site tag (gtag.js) - Google Analytics