我有一个 Web 应用程序,其中使用 DataTable 版本 1.10 来显示记录和分页。我是数据表新手。我发现很难捕获数据表搜索框中的搜索字符串、排序操作、iTotalRecords、iTotalDisplayRecords、iDisplayLength 等参数,
我正在为我的 Web 应用程序使用 struts2。我已启用 bServerSide=true;
并调用"sAjaxSource" : "PaginationAction"
。记录private List<Income> aaData;
正在 jsp 页面中填充。但我发现很难捕获上面指定的其他参数。输入的字符串将转到哪个操作类的变量。?我有一个变量 private String search;
在我的操作类中,我期望应将搜索框字符串分配给该操作类。
请帮我看看这个。我是否需要将 datatable1.10 版本的任何 jar 文件添加到我的项目中(我不确定我们是否有任何 jar)。
这是我的 JQuery 代码:
var oTable=$(".IncomeTable").dataTable({
"paging":true,
"searching": true,
"bProcessing" : true,
"bServerSide" : true,
"bJQueryUI" : true,
"info":true,
"bAutoWidth": false,
"iDisplayLength": 10,
"aLengthMenu": [[10, 15], [10, 15]],
"sPaginationType" : "full_numbers",
"ajax" : "PaginationAction",
"aoColumns": [
{"mData":"description","bSearchable": true,"bSortable": true},
{"mData":"catergory.userCodeName","bSearchable": false,"bSortable": false},
{"mData":"payee.payeeName","bSearchable": false,"bSortable": false},
{"mData":"transactionDate","bSearchable": false,"bSortable": false},
{"mData":"amount","sWidth":"30px","bSearchable": false,"bSortable": false}]
});
Action 类变量:
private int iTotalRecords;
private int iTotalDisplayRecords;
private int iDisplayLength;
private String sEcho;
private String sColumns;
private String sSearch;
private String search;
private String sKeyword;
private List<Income> aaData;
注意:所有整数值均为 ' 0
' 和字符串变量 null
最佳答案
经过几天的谷歌搜索,我对上述帖子的结论如下。
结论:Strut2 不会自动将数据表属性的值填充到操作类的属性中。但是可以使用 HttpServletRequest 对象捕获从 jsp 页面发送的 dataTable 属性。见下面代码
HttpServletRequest request=ServletActionContext.getRequest();
String searchFilterString=request.getParameter("search[value]");
// here String 'search[value]' is the parameter name sent by datatable
Here是从数据表发送到服务器的参数列表以及从服务器发送到数据表的参数列表的链接
下面是一段java代码,我用它来修剪列表以支持我的数据表记录。
int fromIndex=0,toIndex=0;
int length=Integer.parseInt(request.getParameter("length");
int start=Integer.parseInt(request.getParameter("start");
int iDisplayLength=Integer.parseInt(request.getParameter("iDisplayLenght");
if(length>0)
{
fromIndex=(int)(Math.ceil((start+1)/lenght)*length);
toIndex=fromIndex+length;
}
else
{
fromIndex=(int)(Math.ceil((start+1)/iDisplayLength)*iDisplayLength);
toIndex=fromIndex+iDisplayLength;
}
if(toIndex>getAaData().size())
{
toIndex=getAaData().size();
}
setAaData(getAaData().subList(fromIndex,toIndex));
如果有人对上述帖子和我的答案版本有任何疑问,请告诉我。我没有对上述 JQuery 代码进行任何更改。
非常感谢对上述帖子的任何更正和建议
注意:如果您在jquery代码中使用sAjaxSource
而不是ajax
,则会向服务器传递不同的参数。您可以在request
对象中了解数据表的参数。
关于struts2 - 如何发送或捕获数据struts2 action类中表1.10参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34591354/