struts2 与json 整合


简单的说struts2 与json 整合需要几个步骤:

 

1. 导入整合的jar 包  struts2-json-plugin-2.2.1.jar

2. 配置sturts.xml 文件:

<package name="json" namespace="/json" extends="json-default">
    <action name="category_book" method="categoryBook" class="categoryAction">
     <result type="json">
    <param name="includeProperties">data.*</param>
   </result>
    </action>
   
 </package>


自定义json package 包 必须继承 json-default 。 因为 插件struts2-json-plugin-2.2.1.jar 中有默认的配置文件  struts-plugin.xml

文件中内容:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <package name="json-default" extends="struts-default">
        <result-types>
            <result-type name="json" class="org.apache.struts2.json.JSONResult"/>
        </result-types>
        <interceptors>
            <interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/>
        </interceptors>
    </package>
</struts>

3.action层 对 数据的处理

 

public class CategoryAction  extends BaseAction{

	private HibernateService hbase;
	private List data;

	public String categoryBook(){ //
		data=hbase.queryAll();
		return SUCCESS;
	}
	
	public List getData() {
		return data;
	}

	public void setData(List data) {
		this.data = data;
	}
}

主要注意的是:返回给客户端json 串的处理, 返回的数据要借助sturts2 用 ActionSupport  和 ModelDriven 。返回的数据必须有get  set  方法 。代码中用的 List 集合。

在sturts.xml 中需要配置成:

<result type="json"> <param name="includeProperties">data.*</param> </result>  这里面的data 代表action 层中的 List data

 

4. 在客户端解析 json 串

 

//书籍分类加载
	$().ready(function(){
		
		var url=$("#categoryBookUrl").val();
		$.post(url,{},function(data){
			var obj=data;
			var categoryElement=document.getElementById("category");
			$.each(obj, function(i, n){
				$.each(n, function(i, m){
					var optionElement=document.createElement("option");
								
					optionElement.setAttribute("id",m.categoryId);
					optionElement.setAttribute("value",m.name);
					
					var textElement=document.createTextNode(m.name);
					optionElement.appendChild(textElement);
					
					categoryElement.appendChild(optionElement);
					
				});
			});
		});
		
	});


返回的json 是以数据形式需要遍历。不清楚返回json 串的结构可以用火狐debug 看一下返回数据的结构。进行分析。

 

 

2.点 struts2 与json 串整合 如果 可以在前台用 struts 值栈取值  

 

配置方法如下:

 

(1)


 

<action name="privilegeActionJson_*" method="{1}" class="privilegeAction">
     <result type="json"></result>
    </action>

 

(2)

public String showPrivilegeTreeByrid() {
		
		Collection<Privilege> privilegeList=this.privilegeService.getPrivilegeTreeByUid(rid);
		
		ServletActionContext.getContext().getValueStack().push(privilegeList);
		return SUCCESS;
	}


(3)

 

这样在前台返回的数据就是 json 数据格式   (包括 ajax 回调函数)

 

createTree:function(){
		$.post("json/privilegeActionJson_showAllMenuitem.action",null,function(data){
			$("#tree").zTree(tree.setting,data);
		});
	}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值