Java 弹簧自动填充最大尺寸?

Java 弹簧自动填充最大尺寸?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我的英语有点问题。我的用例如下:管理可以访问应用程序的用户列表 在GUI端,我使用一个自动完成字段来搜索用户并将其添加到右侧的表中。用户也可以从表中删除。 当GUI用户提交时,GUI会动态构建一个表单,其中包含用户字段:selectedUsers[1]、…、selectedUsers[N] 我的问题是,我的“后盾”bean中的AutopopulationGlist似乎只增长到256项,然后停止。因此,我得到以下错误: [myapp.web.controller.admin.form.Applic

我的英语有点问题。我的用例如下:管理可以访问应用程序的用户列表

在GUI端,我使用一个自动完成字段来搜索用户并将其添加到右侧的表中。用户也可以从表中删除。 当GUI用户提交时,GUI会动态构建一个表单,其中包含用户字段:selectedUsers[1]、…、selectedUsers[N]

我的问题是,我的“后盾”bean中的AutopopulationGlist似乎只增长到256项,然后停止。因此,我得到以下错误:

[myapp.web.controller.admin.form.ApplicationForm]:属性路径“selectedUsers[256]”中的列表索引无效;嵌套异常为java.lang.IndexOutOfBoundsException:索引:256,大小:256

你知道有没有实际的限制吗?如果是,有没有办法提高它? 如果没有,你能想出解决这个问题的办法吗


提前感谢您的帮助

在Java中,
列表
是0索引的。如果列表包含256个元素,则第一个索引是
selectedUsers[0]
,最后一个索引是
selectedUsers[255]


似乎您正试图访问
selectedUsers[256]
(第257个元素),而列表只包含256个元素。

好的,所以我深入研究了Spring的内部结构,发现默认情况下,256是限制

限制由BeanRapperImpl#autoGrowCollectionLimit属性给出。Spring的WebDataBinder默认配置将其设置为256

提高此限制的正确方法是在控制器中定义@InitBinder注释方法:

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.setAutoGrowCollectionLimit(1024);
}
然后一切都按预期进行

我并没有试图找到一种方法来全局修改此限制


HTH

经过一些阅读之后,看起来有一个“LazyList”界面,您可以使用该界面使用“getBlocks()”方法告诉Spring“嘿,这个列表可以扩展”

请参见此处的完整示例:


但我似乎无法让它在我自己的项目中发挥作用。我认为某种@Bean接口可能是合适的?

谢谢你的回答。是的,这个问题是尺寸问题。该列表由Spring根据HTTP请求自动填充。我的问题是,该列表上有超过256个元素需要映射。我看不出Spring在哪里指定了256的限制,或者我可以在哪里提高它。你可以把它放在一个用@ControllerAdvice注释的类中,为你所有的控制器配置它。看见