将DataTable选定的行数组发送到jsp

时间:2017-02-05 11:15:17

标签: javascript jquery jsp datatables

我有一个具有多选功能的Jquery DataTable。此外还有一个按钮和一个div元素:

    <script>
            $(document).ready(function() {
                        var tablemovChAf  = $('#movChAf').DataTable({

                        //multiselect       
                        $('#movChAf tbody').on('click', 'tr', function () { 
                                $(this).toggleClass('selected');            
                        } );

            })
    </script>

    <button name="sbmsimulate" class="button-input btn btn-info" id="sbmsimulate" style="info" type="button" >
    <div id="divAccMovement"></div>

我想要的是通过点击按钮将所有选定的行发送到“accMovement.jsp”。

$('#sbmsimulate').click( function () {

    $('#divAccMovement').load('accMovement.jsp',{
        mode:"2",
        arrayData:tablemovChAf.rows('.selected').data()
    });

} );    

我的jsp accMovement.jsp看起来像这样;

<%
String str_mode=request.getParameter("mode").toString();
String[] arrayData=null;

if (str_mode.equals("2")) {
    arrayData=request.getParameterValues("arrayData[]");
}

%>

我尝试了Passing javascript array to servlet的解决方案(事实上,这就是我所做的),但它对我没有用。单击按钮时没有任何反应。

我正在调试,似乎问题在于:

arrayData:tablemovChAf.rows('.selected').data()

因为,如果它被注释(并且jsp中的“if”语句也被注释)它正在工作。但是我需要的是将选定的行发送到jsp页面。

从客户端发送阵列并在服务器上接收阵列的正确方法是什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我找到了一个不太适合我的案例的解决方案(遵循此jQuery DataTables Getting selected row values),它并不完全符合我的要求,但我可以在以后添加一些语句以实现我的目标

    $('#sbmsimulate').click( function () {

        var ids = $.map(tablemovChAf.rows('.selected').data(), function (item) {
            return item[11]
        });

        $('#divAccMovement').load('accMovement.jsp',{
            mode:"2",
            arrayData:ids
            });
    } );

索引11的列是我的dataTable的id,因此在服务器端我可以获得有关每一行的所有信息。

但是我想避免这一步:

    var ids = $.map(tablemovChAf.rows('.selected').data(), function (item) {
        return item[11]
    });

并在参数中指定所有内容,如下所示:

arrayData:tablemovChAf.rows('.selected').data()