要在struts2中使用ajax必须先引入struts2-json-plugin-2.3.28.1.jar包
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" />
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
<package name="ajax" extends="json-default">
<action name="ajax_*" class="com.zucc.action.AjaxAction" method="{1}">
<result name="json" type="json"></result>
</action>
</package>
</struts>
action
package com.zucc.action;
import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
import com.zucc.model.User;
public class AjaxAction extends ActionSupport {
private int uid;
private User user;
private List<User> users;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public User getUser() {
return user;
}
public List<User> getUsers() {
return users;
}
public String loadUser() throws Exception{
System.out.println("AjaxAction loadUser...");
System.out.println("uid:" + uid);
this.user = new User();
this.user.setUid(uid);
this.user.setUsername("direct");
return "json";
}
public String loadUserList() throws Exception{
System.out.println("AjaxAction loadUserList...");
this.users = new ArrayList<User>();
for(int i=0;i<10;i++){
User u = new User();
u.setUid(i+1);
u.setUsername("well_"+(i+1));
this.users.add(u);
}
return "json";
}
}
jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="jquery-1.9.1.js"></script>
<title>Insert title here</title>
<script type="text/javascript">
function loadUid(){
var uid = encodeURIComponent($("#uid").val());
$.post("ajax_loadUser","uid="+uid,function(data){
alert(data.user.uid + "," + data.user.username);
})
}
function loadUserList(){
var uid = encodeURIComponent($("#uid").val());
$.post("ajax_loadUserList",null,function(data){
alert(data.users[1].uid + "," + data.users[1].username);
})
}
</script>
</head>
<body>
<input type="text" name="uid" id="uid">
<input type="button" value="提交uid" οnclick="javascript:loadUid();">
<input type="button" value="list" οnclick="javascript:loadUserList();">
</body>
</html>