顺便提下,struts2 Action中的方法不要以get开头命名,否则这个方法会执行两次的
先贴上struts.xml
<package name="demo3" extends="json-default" namespace="/demo3">
<action name="*_*" class="com.lan.action.json.{1}Action"
method="{2}" >
<result name="success" type="json"></result>
</action>
</package>
贴上action
package com.lan.action.json;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts2.json.annotations.JSON;
import com.lan.Bean.Person;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.inject.Scoped;
/**
* Struts2-Json 返回一个list
*
* @author wy
*
*/
public class Demo3Action extends ActionSupport {
private List<Person> persons = new ArrayList<Person>();
private String type;
public String gainList() {
Person p1 = new Person("ABC", 10, "M");
Person p2 = new Person("DEF", 20, "F");
Person p3 = new Person("XYZ", 30, "M");
persons.add(p1);
persons.add(p2);
persons.add(p3);
System.out.println(persons.size());
return SUCCESS;
}
@JSON
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
贴上js
/*
* ajax list對象
*/
//load
$(function() {
$("#list").load("demo3/Demo3_gainList.action", {}, function() {
});
});
// post
$(function() {
$("#button-list-001").click(
function() {
$.post("demo3/Demo3_gainList.action", {
type : "post"
}, function(data) {
$("#list-type").html(data.type);
$.each(data.persons, function(i, list) {
var v_tr = "<tr> <td>" + list.name + "</td><td>"
+ list.age + "</td><td>" + list.sex
+ "</td></tr>";
$("#list-table").append(v_tr);
});
});
});
});
// get
$(function() {
$("#button-list-002").click(
function() {
$.get("demo3/Demo3_gainList.action", {
type : "get"
}, function(data) {
$("#list-type").html(data.type);
$.each(data.persons, function(i, list) {
var v_tr = "<tr> <td>" + list.name + "</td><td>"
+ list.age + "</td><td>" + list.sex
+ "</td></tr>";
$("#list-table").append(v_tr);
});
});
});
});
// ajax
$(function() {
$("#button-list-003").click(
function() {
$.ajax({
url : "demo3/Demo3_gainList.action",
type : "post",
data : "type=" + "ajax",
dataType : "JSON",
success : function(data) {
$("#list-type").html(data.type);
$.each(data.persons, function(i, list) {
var v_tr = "<tr> <td>" + list.name + "</td><td>"
+ list.age + "</td><td>" + list.sex
+ "</td></tr>";
$("#list-table").append(v_tr);
});
}
});
});
});