——————————————————————————————————————————
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()的根本作用。
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获取。
原文链接:https://www.f2er.com/ajax/162937.html