0

在 ItemController 上:

@RequestMapping(value="/delete.htm", produces="application/json", method=RequestMethod.POST)
public @ResponseBody Item deleteItem(
            @RequestParam String itemName) {

    Item existingItem = new Item();
    existingItem.setItemName(itemName);
    itemService.deleteItem(existingItem);
    return existingItem;
}

在 ItemDao 实现上:

@Override
public void deleteItem(Item item) {
    // TODO Auto-generated method stub
    sessionFactory.getCurrentSession().delete(item);
}

在项目 ServiceImpl 上:

@Transactional
public void deleteItem(Item item) {
    // TODO Auto-generated method stub
    itemDao.deleteItem(item);
}

在 Jquery Grid 上,我正在使用删除功能:

function deleteRow(obj, args) { 
    // Get the currently selected row 
    var row = $('#grid').jqGrid('getGridParam','selrow');

    // A pop-up dialog will appear to confirm the selected action
    if (row != null) { 
        $('#grid').jqGrid('delGridRow', row, {
            url: 'delete.htm',
            recreateForm: true,
            beforeShowForm: function (form) {
                //Change title
                $(".delmsg").replaceWith('<span style="white-space: pre;">' +
                                     'Delete selected record?' + '</span>');
                //hide arrows
                $('#pData').hide();
                $('#nData').hide();
            },
            reloadAfterSubmit: true,
            closeAfterDelete: true,
            serializeDelData: function (postdata) {
                var rowdata = $('#grid').getRowData(postdata.id);
                // append postdata with any information 
                return {
                    id: postdata.id,
                    oper: postdata.oper,
                    username: rowdata.username
                };
            },
            afterSubmit: function (response, postdata) {
                var result = eval('(' + response.responseText + ')');
                var errors = "";

                if (result.success == false) {
                    for (var i = 0; i < result.message.length; i++) {
                        errors += result.message[i] + "<br/>";
                    }
                } else {
                    $('#msgbox').text('Entry has been deleted successfully');
                    $('#msgbox').dialog({
                        title: 'Success',
                        modal: true,
                        buttons: {
                            "Ok": function () {
                                $(this).dialog("close");
                            }
                        }
                    });
                }
                // only used for adding new records
                var newId = null;

                return [result.success, errors, newId];
            }
        });
    } else {
        $('#msgbox').text('You must select a record first!');
        $('#msgbox').dialog({
            title: 'Error',
            modal: true,
            buttons: {
                "Ok": function () {
                    $(this).dialog("close");
                }
            }
        });
    }
}

我收到以下错误:错误状态:“错误请求”。错误代码:400 删除所选记录?我在控制器或 jq 网格中遇到错误?请建议

4

2 回答 2

0

这意味着您没有正确地从您的 ajax jquery 调用(?)映射您的控制器。

我对 jqGrid 不熟悉,但请检查您是否正在发布帖子以及请求参数是否定义正确

(顺便说一句,您使用的逻辑和命名约定有点令人困惑。)

于 2013-04-16T12:15:05.650 回答
-1

HTTP-Response Code 400 表示您的请求有问题。只需检查对您的网络服务的调用是否正确(路径、参数等)。

此外,您可以查看您的服务器日志文件,以了解您在客户端做错了什么。Spring-mvc 将响应代码 400 映射到许多异常(看看这里)。通过分析异常,您可以了解您的请求有什么问题。

于 2013-04-16T11:52:36.010 回答