问题原因:
SpringMVC框架提交参数list时,springmvc默认只能接收到255个数据,当你前端页面传的数组数据长度大于255位的时候就会报错
解决方案1:在后台报错的controller类中添加如下方法,这样只对当前类的配置有效。
@InitBinder //类初始化是调用的方法注解
public void initBinder(WebDataBinder binder) {
//给这个controller配置接收list的长度1000,仅在这个controller有效
binder.setAutoGrowCollectionLimit(1000);
}
解决方案2:全局更改相应配置,针对所有controller的类都配置有效。
package com.common.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.support.ConfigurableWebBindingInitializer;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
/**
* 配置请求集合数组长度
*/
@Configuration
public class MyAppConfig {
@Autowired
public MyAppConfig(RequestMappingHandlerAdapter requestMappingHandlerAdapter) {
requestMappingHandlerAdapter.setWebBindingInitializer(new MyWebBindingInitializer());
}
/**
* 配置请求集合上限数量
*/
public static class MyWebBindingInitializer extends ConfigurableWebBindingInitializer {
@Override
public void initBinder(WebDataBinder binder) {
super.initBinder(binder);
binder.setAutoGrowNestedPaths(true);
//配置集合上限数量,配置接收list的长度1000
binder.setAutoGrowCollectionLimit(1000);
}
}
}