2012-11-01 14:15题主

关于url传值然后在sql中取值

请问下,我像在url中传值然后在dataProvider中取值拼接sql.比如,http://127.0.0.1/main?xwl=23P3IZ9NW2OB&type=1 然后在sql中取值select * from WB_LOG where  ({?type?} is null or LOG_TYPE={?type?})却取不到值呢?
2012-11-01 14:20#1
肯定能取到值,在有dataProvider的module的initScript中执行
Wb.println(request,request.getParameter('type'));
然后IDE控制台中看值是否存在。注request.getAttribute中如果存在type,执attribute优先。
2012-11-01 14:27#2
对了,你是什么类型的数据库?为兼容所有类型的数据库,你最好使用LOG_TYPE={?integer.type?},加上integer.,强制转换成整数型参数。
2012-11-01 14:31#3
好像是取不到值呀,Can't find method com.webbuilder.utils.WebUtil.println(string,sun.org.mozilla.javascript.internal.Undefined). url中的参数绝对是传过去了.
2012-11-01 14:49#4
刚重新做了个demo。test.xwl
2012-11-01 15:05#5
找你说的,我确实能够取值了,但是前提是这你只是执行一个方法吧.但是说要是在在界面中如何显示这些json的值呢.下面是我的实现方法,麻烦你给看看.
界面:test.xwl
所要执行的方法:testurl2.xwl
2012-11-01 15:33#6
老大,说说撒.我试过了定义javascript变量也不行.
2012-11-01 15:47#7
没明白你的意思。test.xwl同testurl2.xwl内容一样。
url带的参数,其实就是get方法所提交的参数。
2012-11-01 15:51#8
不一样,test.xwl是将testurl2.xwl中的数据负责显示出来的.也就是说通过url去请求去请求的test.xwl,然后在test.wxl中再去执行#23P3JW7TM6FF(testurl2.xwl)去查询数据库.就是不知道怎么在在testurl2.xwl中获得url中的参数.
2012-11-01 15:55#9
test2:
{"id":"module","title":"test","xwlMeta":"module","children":[{"id":"dataProvider1","sql":"select * from WB_LOG where  ({?type?} is null or LOG_TYPE={?type?})","xwlMeta":"dataProvider"}],"initScript":"Wb.println(request,request.getParameter('type'));"}

testurl2.xwl:
{"id":"module","title":"testurl2","xwlMeta":"module","children":[{"id":"dataProvider1","sql":"select * from WB_LOG where  ({?type?} is null or LOG_TYPE={?type?})","xwlMeta":"dataProvider"}],"loginRequired":"false","initScript":"Wb.println(request,request.getParameter('type'));"}
2012-11-01 15:59#10
呵呵,不好意思.好像是上传错了.testurl2不变.这是test{"id":"module","title":"testurl","xwlMeta":"module","children":[{"id":"store1","xwlMeta":"store","url":"#23P3JW7TM6FF (testurl2)"},{"id":"array1","xwlMeta":"array","children":[{"id":"column1","text":"USER_NAME","xwlMeta":"column","dataIndex":"USER_NAME"},{"id":"column2","text":"MSG","xwlMeta":"column","dataIndex":"MSG"}]},{"id":"viewport1","xwlMeta":"viewport","children":[{"id":"grid1","store":"store1","xwlMeta":"grid","columns":"array1"}]}],"loginRequired":"false","initScript":"var type =request.getParameter('type');"}
其中#23P3JW7TM6FF (testurl2)为调用的方法.这些定义就负责把数据显示出来.
2012-11-01 16:07#11
store传参数有很多的方法,如设置url:main?xwl=id&type=1
也可用JavaScript方法:
store1.params.type=1;
store1.load();
可参考文档
2012-11-01 16:20#12
好吧,可能是我没有说清楚吧.我的意思很简单就是怎么通过url传值实时去查询数据库呢?老大!!!!
2012-11-01 17:41#13
有很多方法可以实现,一般不建议改url的方式传值查询,通常是通过params来传参,如果你一定要这么做,可以:
menuItem1的onClick:
store1.proxy.url='main?xwl=23P1DAU8Q1L0&type=1';
store1.load();

menuItem2的onClick:
store1.proxy.url='main?xwl=23P1DAU8Q1L0&type=2';
store1.load();
这些都属于ExtJS开发的范围,你可以网上搜索、查看WB示例或手册都有说明。
2012-11-01 17:45#14
在WebBuilder中提供JavaScript方法Wb.load(store,params),例如:
Wb.load(store1,{type:1,foo:'bar'});见文档 WebBuilder JavaScript API。
2012-11-02 11:30#15
好了,谢谢!

返回开发者社区