Java Web(8)struts2 result 返回json,jQuery 解析显示

1. 今天在项目中使用jQuery.ajax的时候,想通过服务端返回Json,然后再使用ajax的回调函数来显示处理结果。

2. 在阅读了struts2关于json-plugin的文档后,便对项目按文档说明进行了部署

    首先在pom.xml添加plugin类库依赖

<dependencies>
   ...
   <dependency>
       <groupId>org.apache.struts</groupId>
       <artifactId>struts2-json-plugin</artifactId>
       <version>STRUTS_VERSION</version>
   </dependency>
   ...
</dependencies>

    接着是在struts.xml中配置一个package   

    //这里一定要继承json-default 否则会报错
<package name="json" extends="json-default" namespace="/json">
	    <action name="jsonTest" 
	        class="JsonAction" method="json">
	        <result type="json" name="success">
	        <!-- 不要添加param 	        
	            <param name="enableSMD">true</param>
	            一配置这个,就返回的是一堆版本什么鬼的json数据,不是action里的json数据
	        -->
	        </result>	        
	    </action>
</package>

    然后编写一个对应的Acion类   

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.json.annotations.JSON;
public class JsonAction extends ActionSupport {
    private String name;
    private String sex;
    private String phone;
    public String json(){
        name = "asdf";
        sex = "man";
        phone = "1234567";
        return "success";
    }
    @JSON(name="name")//指定返回的json的对应的name键名
    public String getName(){
        return this.name;
    }
    public String getSex(){
        return this.sex;
    }
    pulibc String getPhone(){
        return this.phone;
    }
    //setter ...
}

    再然后就是在网页中通过$.get或$.post()来异步请求json咯,下面只是写了javascript的代码

$(document).on("click","#jsonBtn",function(){
        //struts2 的标签,生成action的访问链接
	var actionUrl = '<s:url action="jsonTest" namespace="/json"></s:url>';
	var data = {};//一数要请求的数据
	$.post(
		actionUrl,
		data,
		//其中的data已经是jQuery对象表示的json
		function(data){
			$('p').text(data.name+" "+data.sex+" "+data.phone);
		},
		"json" //指定向服务器请求返回的数据类型
	);		
})



你可能感兴趣的:(Java Web(8)struts2 result 返回json,jQuery 解析显示)