Struct2_使用Ajax調用Action方法並返回值


一、Login.jsp
1、<head>引入jquery:
<script type="text/javascript"
    src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.js"></script> 
 
2、界面控件: 
用戶名: <input type="text" id="userName"> 
<input type="button" id="btnAjax" value="Ajax調用" />  
 
3、提交ajax請求
<script type="text/javascript">
        $(function() {
            $("#btnAjax").click(function() {
                var userName = $("#userName").val().trim();
                if (userName == '') {
                    alert("用戶名不能為空");
                    return false;
                }
                //login1為Action類命名空間名稱;AjaxExecute為Action方法名稱
                $.ajax({
                    type : "post",
                    url : '/login1/ajaxExecute',
                    data : {//設置數據源
                        userName : userName,
                        password : "我是密碼"
                    },
                    dataType : "json",//設置需要返回的數據類型
                    success : function(d) {
                        alert(d.sayHi);
                    },
                    error : function(d) {
                        alert(d.responseText);
                    }
                });
            });
        });
    </script> 
 
二、后台類:LoginActionNoNamespce
package action;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.validation.SkipValidation;

import freemarker.template.SimpleDate;

@ParentPackage("json-default")
@Namespace("/login1")
public class LoginActionNoNamespce extends SuperActionSupport {
private static final long serialVersionUID = 1L;
private Map<String, String> dataMap;

//會把本類所有getter方法序列化成字符串返回給jsp頁面
public Map<String, String> getDataMap() {
return dataMap;
}

public void setDataMap(Map<String, String> dataMap) {
this.dataMap = dataMap;
}

@SkipValidation
@Action(value = "ajaxExecute", results = { @Result(type = "json", params = { "root", "dataMap" }) })
public String ajaxExecute() throws Exception {
this.dataMap = new HashMap<String, String>();

// 參數名稱必須和jsp的空間名稱一一對應
String userName = request.getParameter("userName");
String password = request.getParameter("password");
dataMap.put("isSuccess", "true");
SimpleDateFormat now = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
dataMap.put("sayHi", "Hi:" + userName + "  當前時間為:" + now.format(new Date()) + password);

return SUCCESS;
}
}

 

 
三、注意事項
  1. 類注解:@ParentPackage("json-default"),比如為json-default,不能為struts-default
    json-default是繼承於structs-default的,見.m2\repository\org\apache\struts\struts2-json-plugin\2.3.16.3\struts2-json-plugin-2.3.16.3.jar\struts-plugin.xml
  2. Action注解:@Action(value = "ajaxExecute", results = { @Result(type = "json", params = { "root", "dataMap" }) }),這里的type必須為json、root是固定值,去掉params節點會返回undefined
  3. 這里的dataMap定義為:private Map<String, String> dataMap;必須要添加getter、setter參數,否則返回null
  4. JSP頁面(這里可以用命名空間,如 url : '/login1/ajaxExecute', @ParentPackage("json-default")這樣設置就不會報錯)
  5. maven管理,需要引用的庫
    <dependencies>
     
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-core</artifactId>
                <version>2.3.16</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.javassist</groupId>
                        <artifactId>javassist</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-convention-plugin</artifactId>
                <version>2.3.16.3</version>
            </dependency>
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-json-plugin</artifactId>
                <version>2.3.16.3</version>
            </dependency>
            <dependency>
                <groupId>net.sf.json-lib</groupId>
                <artifactId>json-lib</artifactId>
                <version>2.4</version>
            </dependency>
     
        </dependencies>  






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM