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>

来自为知笔记(Wiz)

时间: 2024-12-21 06:43:52

Struct2_使用Ajax调用Action方法并返回值的相关文章

ASP.NET MVC AJAX调用JsonResult方法并返回自定义错误信息

一.如何用AJAX调用JsonResult方法 比如FuckController中添加有个返回JsonResult类型的方法FuckJson(): public JsonResult FuckJson() { return new JsonResult() { Data = new List<string>() { "fuck", "shit" }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }

调用父类方法和返回值

今天用面向对象写了一段代码,用创建的类重构父类的方法,实现函数锁能实现的功能:代码如下 1 from os import getpid 2 from time import sleep 3 from multiprocessing import Process 4 5 6 class MyProcess(Process): 7 8 def __init__(self, args): 9 super(MyProcess, self).__init__() 10 self.args = args 1

Android JNI之调用JAVA方法的返回值签名

从http://blog.csdn.net/lonelyroamer/article/details/7932787截取的 如何签名: 下面看看Sign签名如何写,来表示要取得的属性或方法的类型. 1.普通类型签名 2.引用类型签名 object     L开头,然后以/ 分隔包的完整类型,后面再加:   比如说String    签名就是   Ljava/lang/String; Array      以[ 开头,在加上数组元素类型的签名            比如int[]   签名就是[I

asp.net mvc 使用Ajax调用Action 返回数据【转】

使用asp.net mvc 调用Action方法很简单. 一.无参数方法. 1.首先,引入jquery-1.5.1.min.js 脚本,根据版本不同大家自行选择. <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 2.在Controllers中书写前台Ajax需要调用的Action,比如:

Asp.net mvc 使用Ajax调用Action 返回数据。

使用asp.net mvc 调用Action方法很简单. 一.无参数方法. 1.首先,引入jquery-1.5.1.min.js 脚本,根据版本不同大家自行选择. <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 2.在Controllers中书写前台Ajax需要调用的Action,比如:

EF5+MVC4系列(11)在主视图中用Html.RenderPartial来调用分部视图(ViewDate传值);在主视图中用ajax调用action并在action中return PartialView返回分部视图(return view 和return PartialView 的区别)

一:主视图中调用子视图 在没有使用母版页的主视图中(也就是设置了layout为null的视图中),使用 Html.RenderPartial  可以调用分部视图(只调用视图,不调用action),并且使用 ViewData 来从主Action里面传值到主视图,或者是分布视图 最后生成的html如下   二:在主视图中用ajax调用子action并在子action中使用return PartialView返回分布视图(return view 和return PartialView 的区别) 这种情

action方法不返回

当被请求的action方法中还有资源没有释放时,请求方法是不会返回的,会一直停留在方法中,即使是最后一行,因为请求方法一旦返回,那方法中的资源,引用就没有位置住了,所以所请求的方法会一直不返回,直到方法中的所有资源,引用可以销毁时,这样会导致客户端一直得不到响应.所有在方法中一定要记得释放资源. action方法不返回,布布扣,bubuko.com

Struts2的动态调用action方法

动态调用action方法,是指用 action!method 格式的请求来请求后台的逻辑处理 前提条件:在struts.xml或者struts.properties中配置 struts.enable.DynamicMethodInvocation常量为true ,否则动态调用不可用 查看源码:      在org.apache.struts2.dispatcher.mapper.DefaultActionMapper中 protected ActionMapping parseActionNam

webform中 ajax调用后台方法(非webservice)

后台: public partial class Ajax_ShoppingCart : System.Web.UI.Page { bookdbDataContext bdc = Connect.bookdb(); protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { if(Request.Form["method"]!=null) { switch (Request.Form["me