当前位置: 首页 > 知识库问答 >
问题:

Spring自动填充列表最大大小?

葛念
2023-03-14

我对Spring AutoPopulatingList有问题。我的用例如下:管理可以访问应用程序的用户列表。

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

我的问题是,我的“支持”bean中的AutoPopulatingList似乎只增长到256项,然后停止。所以我得到以下错误:

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

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

提前感谢您的帮助

共有3个答案

慕阳平
2023-03-14

经过一些阅读,看起来有一个“LazyList”接口,您可以使用它来告诉Spring“嘿,这个列表可以扩展”,使用“getBlocks()”方法。

在这里查看完整示例:http://mattfleming.com/node/134

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

申屠恺
2023-03-14

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

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

郑翰海
2023-03-14

好的,所以我对Spring的内部进行了更多的研究,发现默认情况下,256是极限。

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

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

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.setAutoGrowCollectionLimit(1024);
}

然后一切按预期进行。

我没有尝试找到全局修改此限制的方法

HTH

 类似资料:
  • 以下是HTML: 包装器div具有css:position:relative;宽度:100%;身高:100%;高度:0;垫底:56.25%;溢出:隐藏; iframe具有CSS: 容器具有CSS: 我试图在窗口调整大小时保护iframe的16:9的纵横比,并保持它的最大高度为100%-67px calc(100%-67px)。我怎样才能同时做到这两件事呢?

  • 问题内容: 我正在尝试使用Javafx制作屏幕键盘。我正在使用Scene Builder制作FXML文件。 但是,当调整窗口大小时,内容不会。我希望按钮增加/减小大小,直到适合窗口为止。启用Hgrow和Vgrow无效。 而且我找不到如何在按钮上设置填充。我想使类似Ctrl的按钮更小而不丢失文本。 问题答案: 根据字体大小调整大小 对于您的特定情况,而不是尝试使用填充或其他布局约束来调整按钮的大小,

  • 问题内容: 我需要将用户输入的文本显示为固定大小的div。我想要的是自动调整字体大小,以使文本尽可能多地填充框中。 所以-如果div为400px x 300px。如果有人输入ABC,那么它确实是大字体。如果他们输入一个段落,那么它将是很小的字体。 我可能想从最大字体大小开始-也许是32px,并且当文本太大而无法容纳容器时,请缩小字体大小直到适合为止。 问题答案: 和我的HTML是这样的 这是我的第

  • 问题内容: 就像是有什么,但对?我要显示的数据是使用的关联。 我已经尝试使用过,但是在这种情况下,我必须在hibernate状态下使用它,这需要我指定using,并且每当我检索到through时,列表中的元素之间都会有空格,具体取决于。 我需要自动填充集合,因为我需要在创建时动态生成。当我使用plain时,得到以下内容: 还有其他解决方案吗? 编辑 我正在尝试实现动态表格 问题答案: 您无法在MV

  • 问题内容: 从问题的答案如何对varchar []使用array_agg() , 我们可以创建一个自定义的聚合函数来聚合Postgres中的n维数组,例如: 一个约束是值必须共享 相同的数组范围和相同的长度 ,处理空值和不同的长度是行不通的。 从答案: 没有办法解决,数组类型不允许在Postgres中出现这种不匹配的情况。您可以使用NULL值填充数组,以便所有维都具有匹配范围。 我有像这样的行 我

  • 问题内容: 我想在运行时用许多行填充JTable(说10000)。但是我所有的尝试都非常糟糕且效率低下。 起点是获取代表一行的对象列表的方法。我试图通过SwingWorker填写表格,但这对我来说仅适用于小数据。 另一个尝试是直接设置数据而不使用任何类型的线程,但这也非常慢,至少UI不会像SwingWorker那样被阻塞。 那么,您如何做到这一点呢?该表应逐行或逐块填充,但不能全部由一个填充,同时