当前位置:编程学习 > JAVA >>

jquery easyui datagrid查询时,怎么才能传java对象参数?

jquery easyui datagrid加载查询时,怎么才能传java对象参数?
或者给解释下datagrid 加载时候如何修改才能传 对象参数?解决问题者100分追加。
目的是达到就像提交表单那样,在action中直接用对象就能获取到参数值,如下我要传opt对象的id属性:


jsp中:
<form name="">
   <s:hidden name="opt.id" id="opt.id"></s:hidden>
   ......
</form>


  var params = $('#listTable').datagrid('options').queryParams;
  params["opt.id"]=$("opt.id").val();
  $('#listTable').datagrid('load');


java action 中接参数:
class TestAction {
   private OptBean opt;
   public String execute(){
     //在此要获取opt的id值
      //如此能获取到----
     String id = request.getParameter("opt.id")
     //如此获取不到
     id = opt.getId();
     return null;
   }
   set...
   get...
}
class OptBean {
  private String id;
  set...
  get...
}
datagrid easyui jQuery Java 对象 --------------------编程问答-------------------- 不是有个$('#mygrid').datagrid('reload', { myquery: value });吗? --------------------编程问答--------------------
引用 1 楼 fangmingshijie 的回复:
不是有个$('#mygrid').datagrid('reload', { myquery: value });吗?
主要是想,传对象参数,不是直接 单个属性字段,总之是 在action中要用所属对象的get方法获取到,如:传id属性时,我action中 在opt对象中要看到他的id值存在。 --------------------编程问答-------------------- 可以传一个json,不用一个个传 --------------------编程问答--------------------
引用 3 楼 splendid_java 的回复:
可以传一个json,不用一个个传

无论 怎么传,action中能用opt对象获取到就行啊?关键是现在如下情况: 
      //如此能获取到----
     String id = request.getParameter("opt.id")
     //如此获取不到
      id = opt.getId();
--------------------编程问答-------------------- 那就不用穿了,action定义一个和页面的name值一样的属性,就能自动获取了。 --------------------编程问答--------------------
引用 5 楼 fangmingshijie 的回复:
那就不用穿了,action定义一个和页面的name值一样的属性,就能自动获取了。

我现在问题是,对系统前台代码进行重构,action想不变动 现有接参 方式,保持原有对象传值的方式,如果是只是达到接到参数值的目的,我现在就不用再纠结了,因为现在已经能成功传值了;
现在的问题是我要 传值、接值的方式是 对象传值 方式,不是实现 怎么成功传值; --------------------编程问答-------------------- 关键的问题,你如何去构筑这个对象,除非你前台引入java代码,传对象进去。 --------------------编程问答-------------------- $('#listTable').datagrid('load',params); --------------------编程问答--------------------
引用 7 楼 fangmingshijie 的回复:
关键的问题,你如何去构筑这个对象,除非你前台引入java代码,传对象进去。

如果是 form 表单 submit提交,这个opt.id属性是可以传到action中的,即action中opt对象是有值的。
<form name="">
   <s:hidden name="opt.id" id="opt.id"></s:hidden>
   ......
</form>
现在同样想实现,action中opt对象也能有值。
--------------------编程问答-------------------- 你可以封装一个公用类,存放grid自带的那些个属性,入page,rows等参数,至于查询条件貌似不好共用 --------------------编程问答-------------------- 那你这个opt,不还是后台定义的了。 --------------------编程问答--------------------
引用 10 楼 qq1145174853 的回复:
你可以封装一个公用类,存放grid自带的那些个属性,入page,rows等参数,至于查询条件貌似不好共用
封装一个对象可以吗?如果这个可以,其它查询参数也应该可以啊,?因为他们的传值方式 是一样的啊?看源码是这样的,请求的时候都一样的啊!

        var _47a = $.extend({}, opts.queryParams);
        if (opts.pagination) {
            $.extend(_47a, {
                page: opts.pageNumber,
                rows: opts.pageSize
            });
        }
        if (opts.sortName) {
            $.extend(_47a, {
                sort: opts.sortName,
                order: opts.sortOrder
            });
        }
           $.ajax({
                type: opts.method,
                url: opts.url,
                data: _47a,
          ..................

--------------------编程问答--------------------
引用 11 楼 fangmingshijie 的回复:
那你这个opt,不还是后台定义的了。
现在问题就是要解决 为什么 opt对象没有接到值?
而String id = request.getParameter("opt.id")接到了值,可见它是 只 当成字符串了! --------------------编程问答-------------------- 你后台要定义一个opt对象,取的时候直接getOpt().getId()之类的就行了。 --------------------编程问答--------------------
引用 14 楼 fangmingshijie 的回复:
你后台要定义一个opt对象,取的时候直接getOpt().getId()之类的就行了。
 问题是 现在这样不能获取到?这就是要解决的问题点! --------------------编程问答-------------------- 看你如何定义的opt,已经如何使用的opt --------------------编程问答--------------------
引用 16 楼 fangmingshijie 的回复:
看你如何定义的opt,已经如何使用的opt

看一楼嘛!我上面简单写了的啊!
无非是 action中 opt对象 set get,
和 opt 对象class内的 id 属性 set get --------------------编程问答-------------------- 难道获取不到隐藏域的值,显示的写一个属性看看能获取不 --------------------编程问答--------------------
引用 18 楼 fangmingshijie 的回复:
难道获取不到隐藏域的值,显示的写一个属性看看能获取不
直接写死个定值 都不行.不知道为什么。。 --------------------编程问答-------------------- form里有method属性吗?加个method="post" --------------------编程问答--------------------
引用 20 楼 fangmingshijie 的回复:
form里有method属性吗?加个method="post"
又不是form表单提交,给form写method 没有什么作用吧! --------------------编程问答--------------------    问题解决啦,分享下!
   最终走查代码发现了问题,action的 执行方法名为public String getopt(){},而属性定义为OptBean opt;其相对应的get 方法为getOpt,因此action 就有了两个 同名的getOpt()\getopt()方法,唯一的不同就是大小写不同,所以编译时候也不会标红,照样编译通过.但是在前台jsp进行传值后,没有首先找到相应的get方法是而是执行getopt方法,所以造成没有接到值的现象.
因此改掉方法名或是改掉对象声明 对象名,则就解决问题.

经验分享:
   由于是对系统代码进行重构,是别人原有代码,代码不熟悉,也不容易发现定位问题,也没有明显的异常出现,导致问题定位出现了一定的困难,因此在开发过程中一定要注意避免类似问题,在action控制层避免出现get set业务方法出现,这样就避免了类似的问题出现.
  另外,如果有哪位童鞋,有插件或方法在ide中使出现类型同名方法的时候标红或编译不通过,请跟帖分享下.从编码的时候就警告开发者出现同名方法; --------------------编程问答-------------------- var param={"xxx.xxx":$("#xxx").val()};
$('#listTable').datagrid('options').queryParams=param;
$('#listTable').datagrid('reload'); --------------------编程问答--------------------
引用 23 楼 u011605902 的回复:
var param={"xxx.xxx":$("#xxx").val()};
$('#listTable').datagrid('options').queryParams=param;
$('#listTable').datagrid('reload');
 对象在action里面需要get set方法
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,