您的位置:首页 > 编程语言 > Java开发

在Struts应用下一个完整的json例子

2010-10-12 09:05 239 查看
1、前台js代码(使用prototype链接ajax)

function displayItem(code)

{

var url = "ajax/findItems.action?code="+code;

var myAjax = new Ajax.Request(

url,

{

method: 'get', // 使用GET方式发送HTTP请求

onComplete: callbackOp // 指定请求成功完成时需要执行的方法

}

);

}

function callbackOp(response)

{

var object=eval('('+response.responseText+')'); //得到服务器返回的值

var leftContent = object.leftMembers;

var leftSelect = document.getElementById("left");

leftSelect.options.length = 0;

for(i = 0;i<leftContent.length;i++){

var per=leftContent[i].split("_");

leftSelect[i] = new Option(per[1],per[0]);

}

}

}

2、struts.xml配置文件中

<package name="ajax" namespace="" extends="json-default">

<action name="*" class="" method="{1}">

<result type="json"></result>

</action>

</package>

3、action中代码(要导入struts2-json-plugin-2.1.8.1.jar包,我的Struts版本是2.1.8)

import org.apache.struts2.json.annotations.JSON;

public Class ajaxAction extends ActionSupport{

private PracticeService ps;

private List<String> leftMembers;

public String execute(){

leftMembers = ps.findItem(code, 1);

return "success"

}

@JSON(name="leftMembers")

public void setLeftMembers(List<String> leftMembers) {

this.leftMembers = leftMembers;

}

public List<String> getLeftMembers() {

return leftMembers;

}

public void setPs(PracticeService ps) {

this.ps = ps;

}

}

如果页面的js文件中的responseText里的内容出现html网页的内容可以将getMembers方法去掉试下看,本人就是这么干的

4、在service中有个方法将得到一个List<String>的串在这里我是只将要在web页面显示的东西拼起来的,如我在页面只要member的code和name属性里的值(member 是自己定义的一个model),那我中间便用"_"隔开,以便在js中取值

for(Member single : list){

StringBuffer temp = new StringBuffer();

temp.append(String.valueOf(single.getCode()));

temp.append("_");

temp.append(single.getName());

members.add(temp.toString());

}

如有更好的方法,望指教!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: