jQuery MiniUI

标题: DataGrid控件:弹出面板编辑 [打印本页]

作者: malin1994515    时间: 2013-7-20 15:20:19     标题: DataGrid控件:弹出面板编辑

  1. <!-- 窗格插件 -->
  2.           <div id="datagrid1" class="mini-datagrid" style="width:900px;height:280px;" url="users/getAll" >
  3.             <div property="columns">
  4.                 <div name="action" width="120" headerAlign="center" align="center" renderer="onActionRenderer" cellStyle="padding:0;">#</div>
  5.                 <div field="username" width="120" headerAlign="center" allowSort="true">员工帐号</div>   
  6.                 <div field="name" width="120" headerAlign="center" allowSort="true">姓名</div>                           
  7.                 <div field="sex" width="100" renderer="onGenderRenderer" align="center" headerAlign="center">性别</div>
  8.                 <div field="wage" width="100" allowSort="true">薪资</div>                                    
  9.                 <div field="age" width="100" allowSort="true">年龄</div>
  10.                 <div field="birthday" width="100" headerAlign="center" dateFormat="yyyy-MM-dd" allowSort="true">创建日期</div>               
  11.             </div>
  12.         </div>
  13.        
  14.         <!-- 编辑窗体插件 -->
  15.         <div id="editWindow" class="mini-window" title="Window" style="width:650px;"
  16.     showModal="true" allowResize="true" allowDrag="true">
  17.             <div id="editform" class="form" >
  18.         <input class="mini-hidden" name="id"/>
  19.         <table style="width:100%;">
  20.             <tr>
  21.                 <td style="width:80px;">员工帐号:</td>
  22.                 <td style="width:150px;"><input name="username" class="mini-textbox" /></td>
  23.                 <td style="width:80px;">姓名:</td>
  24.                 <td style="width:150px;"><input name="name" class="mini-textbox" /></td>
  25.                 <td style="width:80px;">薪资:</td>
  26.                 <td style="width:150px;"><input name="wage" class="mini-textbox" /></td>
  27.             </tr>
  28.             <tr>
  29.                 <td>性别:</td>
  30.                 <td><input name="sex" class="mini-combobox" url="data/genders.txt"/></td>
  31.                 <td>年龄:</td>
  32.                 <td><input name="age" class="mini-spinner" minValue="0" maxValue="200" value="25"  /></td>
  33.                 <td>出生日期:</td>
  34.                 <td><input name="birthday" class="mini-datepicker" /></td>
  35.             </tr>
  36.             <tr>
  37.                 <td style="text-align:right;padding-top:5px;padding-right:20px;" colspan="6">
  38.                     <a class="Update_Button" href="javascript:updateRow()">Update</a>
  39.                     <a class="Cancel_Button" href="javascript:cancelRow()">Cancel</a>
  40.                 </td>               
  41.             </tr>
  42.       
  43.         </table>
  44.     </div>
  45.     </div>
  46.        
  47.        
  48.        
  49.         <script type="text/javascript">
  50.        
  51.         mini.parse();
  52.         var grid = mini.get("datagrid1");
  53.         grid.load();
  54.                 var editWindow = mini.get("editWindow");
  55.                        
  56.                
  57.                 ////////////////////////////////////////////////////
  58.                 function onActionRenderer(e) {
  59.             var grid = e.sender;
  60.             var record = e.record;
  61.             var uid = record._uid;
  62.             var rowIndex = e.rowIndex;

  63.             var s = '<a class="New_Button" href="javascript:newRow()">New</a>'+"   "
  64.                     + '<a class="Edit_Button" href="javascript:editRow(\'' + uid + '\')">Edit</a>';
  65.                        
  66.             return s;
  67.         }
  68.         
  69.         function editRow(row_uid) {
  70.             var row = grid.getRowByUID(row_uid);
  71.             if (row) {

  72.                 editWindow.show();
  73.                 var form = new mini.Form("#editform");
  74.                 form.clear();

  75.                 form.loading();
  76.                 $.ajax({
  77.                     url: "users/findById",
  78.                     data:{id:row.id},
  79.                     success: function (text) {
  80.                         form.unmask();

  81.                         var o = mini.decode(text);
  82.                         form.setData(o);
  83.                         
  84.                         
  85.                     },
  86.                     error: function () {
  87.                         alert("表单加载错误");
  88.                         form.unmask();
  89.                     }
  90.                 });

  91.             }
  92.         }
  93.         
  94.         function updateRow() {            
  95.             var form = new mini.Form("#editform");
  96.             var o = form.getData();

  97.             grid.loading("保存中,请稍后......");
  98.             var json = mini.encode(o);
  99.             $.ajax({
  100.                 url: "users/update",
  101.                 data: { data: json },
  102.                 success: function (text) {
  103.                     
  104.                     grid.reload();
  105.                 },
  106.                 error: function (jqXHR, textStatus, errorThrown) {
  107.                     alert(jqXHR.responseText);
  108.                 }
  109.             });

  110.             editWindow.hide();
  111.         }
  112.         

  113.                
  114.         </script>

  115. 以上是我的显示层代码
  116. 下面是我SpringMVC控制器的方法

  117. @RequestMapping("/update")
  118.     public void update(String data){
  119.         
  120.         System.out.println(data);
  121.         JSONObject jsonObject = JSONObject.fromObject(data);
  122.         Users users = (Users) jsonObject.toBean(jsonObject, Users.class);
  123.         this.getUs().update(users);
  124.     }


  125. 奇葩的问题sql语句能能够发送成功但是在成功调用完 update 方法后  update方法依然被无限调用直至内存溢出下面是我的异常信息
复制代码



作者: malin1994515    时间: 2013-7-20 15:24:46

Hibernate:
    select
        users0_.ID as ID2_,
        users0_.AGE as AGE2_,
        users0_.BIRTHDAY as BIRTHDAY2_,
        users0_.NAME as NAME2_,
        users0_.SEX as SEX2_,
        users0_.USERNAME as USERNAME2_,
        users0_.WAGE as WAGE2_
    from
        SCOTT.USERS users0_
Hibernate:
    select
        users0_.ID as ID2_0_,
        users0_.AGE as AGE2_0_,
        users0_.BIRTHDAY as BIRTHDAY2_0_,
        users0_.NAME as NAME2_0_,
        users0_.SEX as SEX2_0_,
        users0_.USERNAME as USERNAME2_0_,
        users0_.WAGE as WAGE2_0_
    from
        SCOTT.USERS users0_
    where
        users0_.ID=?
{"id":1,"username":"malin199415","name":"马林","wage":"8000","sex":"男","age":19,"birthday":"2010-01-01T00:00:00"}
Hibernate:
    update
        SCOTT.USERS
    set
        AGE=?,
        BIRTHDAY=?,
        NAME=?,
        SEX=?,
        USERNAME=?,
        WAGE=?
    where
        ID=?
{"id":1,"username":"malin199415","name":"马林","wage":"8000","sex":"男","age":19,"birthday":"2010-01-01T00:00:00"}
Hibernate:
    update
        SCOTT.USERS
    set
        AGE=?,
        BIRTHDAY=?,
        NAME=?,
        SEX=?,
        USERNAME=?,
        WAGE=?
    where
        ID=?
{"id":1,"username":"malin199415","name":"马林","wage":"8000","sex":"男","age":19,"birthday":"2010-01-01T00:00:00"}
……  省略N次sql语句发送然后内存溢出
严重: Servlet.service() for servlet springMVC threw exception
java.lang.StackOverflowError
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)

作者: niko    时间: 2013-7-20 18:14:13

这个问题其实非常简单。
MiniUI复杂把数据通过ajax传递到后台,后台的事是你完全控制的,你可以断点调试定位错误。
作者: malin1994515    时间: 2013-7-20 18:31:51

niko 发表于 2013-7-20 18:14
这个问题其实非常简单。
MiniUI复杂把数据通过ajax传递到后台,后台的事是你完全控制的,你可以断点调试定 ...

恩  问题已经 解决了      是我没有为 update函数指定 返回路径
感谢   管理员




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2