您的位置:首页 > 其它

项目____SSH框架下Ajax数据通信过程中数据读取不到的问题

2015-09-08 11:47 323 查看
——————————————————————————————————————————

action代码:

public String getOgcConfigById(){
CData ogc = this.ddsManage.getOgcConfigById(data);
try {
Struts2Utils.getResponse().getWriter().println(JSONArray.fromObject(ogc));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}


这段代码是纠正过的,原本是下面这句,以为只查询了一个结果用CData接收 可以像数字或者字符一样直接当参数传入。

Struts2Utils.getResponse().getWriter().println(ogc);
但是经过这句代码后在前端界面无法读取数据。

究其原因是没有弄明白这条代码的根本面目,以及JSONArray.fromObject()的根本作用。

jsp页面代码:

function Edit(id){
var id=id;
$.ajax({
url:'<c:url value="/basicInfor/ddsManage/dds!getOgcConfigById.action"/>',
type:"POST",
async: false,
dataType : "json",
data : 'id='+id,
success:function(data) {
//使用struts2框架下的ajax传回数据 将CData类型转成了JSONArray 所以data只有一条数据也要选择第一个:data[0]
$("#uid").val(data[0].id);
$("#ukey").val(data[0].config_key);
$("#uregion").val(data[0].region);
$("#uusable").val(data[0].usable);
}
})
$('#myModal3').modal("show");

}
这段代码也是纠正过的,原本代码是data.id没有选取元素。因为当时以为像传入数值类型一样 可以直接调用。而如果转化成了JSONArray类型 无论传入多少个值必须选择某个元素后再利用keyvalue取值。

——————————————————————————————————————————

tip:

举例:jsp利用表格提交id="abc"字段,在action中利用data.get("abc")获取值,为空!在mapper.xml中直接使用#{abc}可以获得该值。

因为:一个是存储到request范围的值。项目中的data是package ssdevframework.front.action;包中的abstract class BaseActionSupport内声明的CData类型变量。data会读取request范围内相应key的值。而在action中要想读取对应id的值,则需要先声明private修饰的同名变量,获取到request中对应的值,然后存储到data对应的key中。才能通过data获取。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: