struts2 json jquery 集成详解(1)

从以下网址http://code.google.com/p/jsonplugin/downloads/list下载JSON插件的JAR包(新版本是0.32),并加到工程的相应目录下。从如下网址http://docs.jquery.com/Downloading_jQuery下载jquery所需文件。(建议下载稳定版本,不然会出现莫名其妙的错误)

2.配置相应的xml文件,为ajax请求提供数据:

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEstrutsPUBLIC

"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<packagename="sajax"extends="json-default"namespace="/book">

<actionname="getAjaxBookChannelList"method="getAjaxBookChannelList"class="bookChannelAction">

<resulttype="json"/>

</action>

<actionname="getAjaxBookCategoryListByChannelID"method="getAjaxBookCategoryListByChannelID"class="bookChannelAction">

<resulttype="json"/>

</action>

</package>

</struts>

配置有两处与通常的action配置不同,一处是扩展了json-default,json-default”是在jsonplugin-0.30.jar包里的struts-plugin.xml中定义的,文件内容如下:

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEstrutsPUBLIC

"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<packagename="json-default"extends="struts-default">

<result-types>

<result-typename="json"class="com.googlecode.jsonplugin.JSONResult"/>

</result-types>

<interceptors>

<interceptorname="json"class="com.googlecode.jsonplugin.JSONInterceptor"/>

</interceptors>

</package>

</struts>

另一处是定义了返回类型为json<resulttype="json"/>,会将response中的返回数据转化为json对象。

3.在Action中的定义。定义返回对象,并添加get,set方法。返回的数据可以根据需要格式成json形式(json格式如{1:test,2:test}),比如为二级列表提供填充内容的的数据,在页面需要进行遍历,做成json形式的,在页面遍历时也会比较方便。Action代码(部分)如下:

publicStringgetAjaxBookChannelList(){

StringBuffersb=newStringBuffer();

bookChannelList=bookService.getBookChannelList();

if(bookChannelList.size()>0){

intj=bookChannelList.size();

sb.append("{");

for(inti=0;i<j;i++){

BookChannelbc=(BookChannel)bookChannelList.get(i);

sb.append(bc.getId());

sb.append(":");

sb.append("\"");

sb.append(bc.getName());

sb.append("\"");

if(i!=(j-1))

sb.append(",");

}

sb.append("}");

}

strAjaxChannel=sb.toString();//返回的数据

returnAction.SUCCESS;

}

相关推荐