起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2570|回复: 9

[结贴] action在跨域取XML之后,如何将数据(一个表的多行)传到前台??

[复制链接]

8

主题

40

帖子

88

积分

初级会员

Rank: 2

积分
88
QQ
发表于 2016-12-2 12:46:37 | 显示全部楼层 |阅读模式
public static JSONObject[] JSONObjectMain(String strXML,int type) {//解析appjk输出的XML数据
                System.out.println(strXML);
                JSONObject object = new JSONObject();
                StringReader read = new StringReader(strXML);
            //创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
            InputSource source = new InputSource(read);
            //创建一个新的SAXBuilder
            SAXBuilder sb = new SAXBuilder();
                //通过输入源构造一个Document
            try
            {
               Document doc = sb.build(source);
                //取的根元素
               Element root = doc.getRootElement();
               System.out.println("根元素:" + root.getName());

               List<Element> lineList = root.getChildren("datatable");// 也可使用root.getChildren()  
               for (Element el : lineList) {  
                       if (type == 1){
   //                Element lineElement = (Element) iter.next();
                               myguid = el.getChildText("guid");
                           String guid = el.getChildText("guid");// 获取<line>元素的lid属性值  
                           String ssdw = el.getChildText("ssdw");// 获取<line>元素的num属性值  
                           String yhqx = el.getChildText("yhqx");
                           String yhm = el.getChildText("yhm");
                
                           System.out.println("==guid:" + guid);  
                           System.out.println("==ssdw:" + ssdw);
                           System.out.println("==yhqx:" + yhqx);  
                           System.out.println("==yhm:" + yhm);  
                           
                           if(guid != ""){
                                   object.put("login", "1");
                           }
                           else
                                   object.put("login", "0");
                           object.put("guid", guid);
                           object.put("ssdw", ssdw);
                           object.put("yhqx", yhqx);
                           object.put("yhm", yhm);
                       }
}


我有一个数据查询已经在web端做好了,但是返回的是XML...我现在可以取到这些值,但是不知道应该存哪里,前台应该怎样调用这几十行数据.

action教程里说的jsonobject只能传一条到前台,不知道怎么将多条数据传到前台在循环存到data组件里.

baasdata教程视频里直接关联数据库了,不知道怎么在baasserver里对baasdata循环赋值.

感觉这种数据从后台到前台应该不难,请问有没有可以指教一下的,最好能有代码示例的.

谢谢!!!
发表于 2016-12-2 14:11:08 | 显示全部楼层
返回值是什么类型都可以的!只要能序列化就可以!
如果是多行数据的话,建议使用jsonArray 返回!
用法可以上网搜下吧!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

8

主题

40

帖子

88

积分

初级会员

Rank: 2

积分
88
QQ
 楼主| 发表于 2016-12-2 14:44:42 | 显示全部楼层
liangyongfei 发表于 2016-12-2 14:11
返回值是什么类型都可以的!只要能序列化就可以!
如果是多行数据的话,建议使用jsonArray 返回!
用法可以 ...

但是jsonArray 能从action后台到前台么? 不是说只能返回jsonArray前台接受么?
回复 支持 反对

使用道具 举报

发表于 2016-12-2 14:58:31 | 显示全部楼层
quasimodo1218 发表于 2016-12-2 14:44
但是jsonArray 能从action后台到前台么? 不是说只能返回jsonArray前台接受么?

啥类型都可以~!只要toString 方法是字符串就行!前端就可以获取这个字符串!你可以在onCurrentRefresh 事件中,接管返回值,自己调试看看!

自定义action 调用可以参考下:http://docs.wex5.com/wex5-server-question-list-2022
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

8

主题

40

帖子

88

积分

初级会员

Rank: 2

积分
88
QQ
 楼主| 发表于 2016-12-2 15:45:55 | 显示全部楼层
多行数据如何传到前台的data组建上? 一条数据我已经实现了,知道怎么传,具体的参数也能取,多条呢.刚才说传jsonArray,我改成jsonArray了之后又报错了...就算是传jsonArray了到前台,怎么在js理操作jsonArray啊??
回复 支持 反对

使用道具 举报

发表于 2016-12-2 17:00:50 | 显示全部楼层
quasimodo1218 发表于 2016-12-2 15:45
多行数据如何传到前台的data组建上? 一条数据我已经实现了,知道怎么传,具体的参数也能取,多条呢.刚才说传js ...

你自己看看数据的格式是怎样的??
把数据加载到data组件中的数据 json 格式是有要求的
http://docs.wex5.com/wex5-ui-question-list-2032/

一条数据,你使用的是JSONObject 返回的吗??

可以再试试 返回ArrayList <JSONObject >  这种格式是否可以!
反正返回的字符串类型格式应该类似:/UI2/demo/tuniu/json/cityData.json
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

8

主题

40

帖子

88

积分

初级会员

Rank: 2

积分
88
QQ
 楼主| 发表于 2016-12-3 01:11:07 | 显示全部楼层
liangyongfei 发表于 2016-12-2 17:00
你自己看看数据的格式是怎样的??
把数据加载到data组件中的数据 json 格式是有要求的
http://docs.wex5 ...

后台我之前返回的是jsonobject,但是put的时候只存到了最后一条,没能按着顺序将所有的行都存进去。
请问怎么才能将要返回的jsonobject存成/UI2/demo/tuniu/json/cityData.json里面格式的样子让data的组件直接读取??
回复 支持 反对

使用道具 举报

8

主题

40

帖子

88

积分

初级会员

Rank: 2

积分
88
QQ
 楼主| 发表于 2016-12-4 20:56:47 | 显示全部楼层
后台到前台到底都支持哪些类型?示例里好像只有jsonobject,这种格式无法传输像cityData.json这样的多条对象的json数据吧??那后台的多条数据应该怎么到前台显示?如果不通过jsonobject,请问是够有办法在后台直接写baasdata数据?示例里好像都是直接从数据库里取,我这个是自己从XML摘出来的,如果在server里设置baasdata具体的步骤如何?总得有个办法从后台传多条记录供前台list组件使用吧??
回复 支持 反对

使用道具 举报

发表于 2016-12-5 12:47:20 | 显示全部楼层
quasimodo1218 发表于 2016-12-4 20:56
后台到前台到底都支持哪些类型?示例里好像只有jsonobject,这种格式无法传输像cityData.json这样的多条对 ...

查询数据库是返回的Table 类型的格式!

你可以这样 在jsonObject 中放置一个list集合
  1. public static JSONObject service(JSONObject params, ActionContext context) throws JsonGenerationException, JsonMappingException, IOException, WxErrorException{

  2.                 JSONObject map = new JSONObject();
  3.                 List<JSONObject> list = new ArrayList<JSONObject>();
  4.                 JSONObject map1 = new JSONObject();
  5.                 map1.put("test1","test1");
  6.                 map1.put("test2","test2");
  7.                 list.add(map1);
  8.                 map.put("test",list);
  9.                 return map;
  10.         }
复制代码
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

8

主题

40

帖子

88

积分

初级会员

Rank: 2

积分
88
QQ
 楼主| 发表于 2016-12-6 12:35:23 | 显示全部楼层
liangyongfei 发表于 2016-12-5 12:47
查询数据库是返回的Table 类型的格式!

你可以这样 在jsonObject 中放置一个list集合

管用,已解决,非常感谢!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-24 05:46 , Processed in 0.057799 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表