java orderable_无法将查询字符串参数映射到我的JavaBean(使用Spring 4和Datatables)...

我真的很想在这里将QueryString参数映射到我的Spring JavaBean Command对象中,到目前为止,我找不到我的问题的答案。

我正在将jQuery Datatables插件与服务器端处理一起使用,以便数据表中的每个操作都触发对Spring应用程序的AJAX请求。

这是Datatable插件发送到我的Rest服务的参数:

http://localhost:8080/relatorios/produtos-source?draw=2&columns[0][data]=nome&columns[0][name]=&columns[0][searchable]=true&columns[0][orderable]=true&columns[0][search][value]=&columns[0][search][regex]=false&columns[1][data]=nomesAlternativos&columns[1][name]=&columns[1][searchable]=true&columns[1][orderable]=true&columns[1][search][value]=&columns[1][search][regex]=false&order[0][column]=2&order[0][dir]=asc&start=0&length=10&search[value]=ss&search[regex]=false&_=1400248561282

这就是我在Spring Controller中收到它的方式:

@RequestMapping(value = "/produtos-source", method = RequestMethod.GET)

@ResponseStatus(HttpStatus.OK)

@ResponseBody

public ProdutoTable dataTableRequest(@ModelAttribute DataTableCriterias criterias) {

...

}

最后,这是我的DataTableCriterias JavaBean(由@ModelAttribute表示):

public class DataTableCriterias {

private int draw;

private int start;

private int length;

private Map search;

private List> order;

private List columns;

public enum SearchCriterias {

value,

regex

}

public enum OrderCriterias {

column,

dir

}

public class Column {

private String data;

private String name;

private boolean searchable;

private boolean orderable;

private Map search;

}

}

(省略/设置员)

这几乎完美地工作!如果我删除此行:

private List columns;

然后Spring从查询字符串中自动填充我的DataTableCriterias bean(但是,我当然没有映射columns属性)

但是添加此行后,出现此错误:

2014-05-16 17:20:16.605 ERROR 2368 --- [tomcat-http--99] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/relatorios] threw exception [Request processing failed; nested exception is org.springframework.beans.InvalidPropertyException: Invalid property 'columns[0][data]' of bean class [com.bergermobile.rest.domain.DataTableCriterias]: Illegal attempt to get property 'columns' threw exception; nested exception is org.springframework.beans.NullValueInNestedPathException: Invalid property 'columns' of bean class [com.bergermobile.rest.domain.DataTableCriterias]: Could not instantiate property type [com.bergermobile.rest.domain.DataTableCriterias$Column] to auto-grow nested property path: java.lang.InstantiationException: com.bergermobile.rest.domain.DataTableCriterias$Column] with root cause

org.springframework.beans.NullValueInNestedPathException: Invalid property 'columns' of bean class [com.bergermobile.rest.domain.DataTableCriterias]: Could not instantiate property type [com.bergermobile.rest.domain.DataTableCriterias$Column] to auto-grow nested property path: java.lang.InstantiationException: com.bergermobile.rest.domain.DataTableCriterias$Column

at org.springframework.beans.BeanWrapperImpl.newValue(BeanWrapperImpl.java:651)

如我所见,主要问题是Datatable插件发送的’column’参数是一个二维数组,有时也是一个三维数组:

columns[0][data]=nome

columns[0][search][regex]=false

因此,看来我的Bean是正确的,但出现此错误,现在我被卡住了。

有任何想法吗?

非常感谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值