【问题标题】:Cell cannot be updated (Server error)无法更新单元格(服务器错误)
【发布时间】:2013-03-05 22:26:33
【问题描述】:

我正在使用 Servlet 使用 mysql 数据库数据填充 jsp 页表,并使用 jquery 数据表插件使表可编辑。

但是,表格编辑不起作用,每次我编辑字段并按“Enter”时都会收到错误“无法更新单元格(服务器错误)”。我的 doPost 方法还在运行吗?

这是我的 jquery 脚本:

<script type="text/javascript">  
        $(document).ready(function(){
        oTable = $("table#datatables").dataTable({
                "sPaginationType":"full_numbers",
                "aaSorting":[[2, "desc"]],
                "bJQueryUI":true,
                "sDom": '<"top"i><"title">lt<"bottom"pf>'               
                }).makeEditable({
                "sUpdateURL": "/home",
                "aoColumns": [
                 null,  //medical record number
                 {},    //last name; default editing    
                 {},    //first name; default editing
                 {},    //middle name; default editing
                 {},    //date of birth; default editing
                 {      //gender, selection between M and F
                    indicator: 'Saving...',
                    tooltip: 'Click to select gender',
                    loadtext: 'loading...',
                    type: 'select',
                    onblur: 'submit',
                    data: "{'M':'M','F':'F'}"
                 }, 
                 null,  //admission date time
                 null,  //discharge date time
                 null,  //attending physician
                 {}     //room; default editing
                 ]
            });
        });
     </script>

这是我家 Servlet 的 doPost 方法

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
             int id = Integer.parseInt(request.getParameter("id"));
     int columnId = Integer.parseInt(request.getParameter("columnId")); 
     int columnPosition = Integer.parseInt(request.getParameter("columnPosition")); 
     int rowId = Integer.parseInt(request.getParameter("rowId")); 
     String value = request.getParameter("value"); 
     String columnName = request.getParameter("columnName");

     System.out.println(value);         
}

我的 servlet 的 URL 映射是“/home”

【问题讨论】:

  • 如果您的 servlet 映射到 /home,则将此 "sUpdateURL": "/home/UpdateData" 更改为此 "sUpdateURL": "/home"
  • 试过了,还是一样的错误。
  • 出于调试目的,请在您的doPost 中添加日志或 println 语句。此外,您的doPost 正在将value 写入回复。这就是你想要的吗?
  • 这就是我最初想要的,但为了让生活更轻松,将其更改为控制台写入行,代码会相应更新。
  • 在浏览器控制台中检查AJAX请求,看看它是否正在建立连接,发送和返回的数据(如果有的话),以及http状态。

标签: java javascript jquery servlets


【解决方案1】:

我的 doPost 方法还在运行吗?

我不确定默认情况下 dataTable 是否发出 POST 请求。 可能您需要添加一个方法类型 POST。类似"sServerMethod": "POST""bServerSide": true,

参考: http://www.datatables.net/release-datatables/examples/server_side/post.html

http://www.datatables.net/release-datatables/examples/data_sources/server_side.html

"sUpdateURL": "/home"

检查您是否已使用映射映射您的 servlet。

最简单的方法,我建议您将sys out 放在doGet()doPost() 中。

现在有了像 Mozilla Firefox 这样的现代浏览器,您可以使用 Firebug 等工具检查 Http 请求。

【讨论】:

  • 没什么。我的 servlet 被映射到“home”,因为我的 doGet 方法可以正常获取所有数据。我实现了 JQuery 数据表以便能够编辑数据,并使用 home servlet 上的 doPost 方法写入控制台。但是,我总是得到错误。
【解决方案2】:

我也遇到过同样的问题。这通常意味着响应不会在 servlet 处结束。尝试只使用“家”。或者,如果您有虚拟名称(可能您正在使用过滤器来过滤所有 servlet,例如以“/scheduler/”开头),请尝试在“home”之前添加它。例如,它看起来像“/scheduler/home”。或者尝试使用提交按钮(action="/home")创建表单并检查您的“/home”资源是否可访问。

【讨论】:

    猜你喜欢
    • 2019-01-22
    • 2018-07-27
    • 2018-05-17
    • 2018-05-03
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    相关资源
    最近更新 更多