struts2.1.6 CoC + jsonplugin 快速生成json 的基础配置篇

struts2.1.6 通过XML集成 jsonplugin 生成json的文章很多,但通过CoC集成jsonplugin 的却寥寥无几,本人有幸试验成功,发布下给大家分享

CoC方式集成JsonPlugin生成json的配置步骤如下

(所有的代码都基于springside3.1.0 showcase实例测试)

配置Action
package org.springside.examples.showcase.common.web;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springside.modules.web.struts2.SimpleActionSupport;

import com.googlecode.jsonplugin.annotations.JSON;


/**
 * Json 测试 Action.
 * 
 * @author amu
 */
@SuppressWarnings("serial")
@ParentPackage("json-default")
@Namespace("/common")
public class User2Action extends SimpleActionSupport {
	
	@Action(interceptorRefs={@InterceptorRef("paramsPrepareParamsStack"),@InterceptorRef("defaultStack")},results={@Result(type="json", name = "test")})
	public String test() throws Exception {
		name = "AMU: HELLO WORLD";
		return "test";
	}
	private String name="amu";

    @JSON(name="ISBN")
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}	
}


NOTE
1:导入json.jar,json-lib-2.2.2-jdk15.jar,jsonplugin-0.33.jar
2:@ParentPackage一定要写json-default
3:@Result配置时,要注意的是type=“json” name一定要有名字,且方法体返回值也应该和这个配置的名字对应,否则会没有返回值
4:在需要修饰的字段上加上@JSON注释

测试下输入http://localhost:8080/showcase/common/user2!test.action
如果页面显示{"ISBN":"HELLO AMU"},或提示保存一个文件,保存下来后里面也有同样的内容就说明配置成功。

用页面测试
<%@ page contentType="text/html;charset=UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Json 示例</title>
<%@ include file="/common/meta.jsp"%>
<%@ include file="/common/taglibs.jsp"%>
<script>
    function jsonTest() {
		$.get("${ctx}/common/user2!test.action", {Action:"get"}, function (data, textStatus){
				//返回的 data 可以是 xmlDoc, jsonObj, html, text, 等等.
				this; // 在这里this指向的是Ajax请求的选项配置信息,请参考下图
				alert(data);
				alert(textStatus);//请求状态:success,error等等。                                  当然这里捕捉不到error,因为error的时候根本不会运行该回调函数
				alert(this);
		});
    }
</script>
</head>
<body>
<h2>Json 示例</h2>
<button onclick="jsonTest();">test</button>
</body>
</html>

可以看到页面也获得值

你可能感兴趣的:(apache,json,Web,Ajax,jsp)