struts2 - 如何发送或捕获数据struts2 action类中表1.10参数

标签 struts2 datatables

我有一个 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/

相关文章:

json - 如何将 jQuery 数据表转换为 CSV 格式

java - 在我的网络应用程序中从 spring 中获取 'No thread-bound request found' 错误

java - 为什么当我请求 Struts2 操作时会出现此 NPE?

java - 无法在struts2中通过jdbc从数据库存储和检索图像数据

javascript - jQuery 数据表以正确的格式导出到 Excel

jquery - 如何在 R Shiny 中右对齐 DataTable 的列?

java - 在 Struts 2 中从 Java 获取 JSON 对象

java - 设置 bean 时出现空指针异常

jquery - DataTables 分页似乎不适用于服务器端数据

javascript - 包装一系列闭包