无法发布包含许多(超过256个)值的表单

sve*_*erg 10 embedded-jetty thymeleaf spring-boot embedded-tomcat-8

我正在使用Thymeleaf的Spring Boot 1.2.2.我的问题是我尝试在表单中发布一长串项目(一些标签,一个复选框),这些列表不能执行我的列表中的这么多项目.(我测试了小清单并且它有效.)

首先我使用了码头,但收到了错误,其中说:

java.lang.IllegalStateException: Form too many keys
at org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:526)
Run Code Online (Sandbox Code Playgroud)

我搜索并看到了这篇文章.结果我补充说

applicationDefaultJvmArgs = ["-Dorg.eclipse.jetty.server.Request.maxFormKeys=8000"]
Run Code Online (Sandbox Code Playgroud)

到我的gradle.build,但它没有成功.结果我切换到Tomcat,它再次失败.错误消息是:

java.lang.IndexOutOfBoundsException: Index: 256, Size: 256
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
Run Code Online (Sandbox Code Playgroud)

看起来它只能执行256个条目.我有大约500个条目.所以我认为增加maxhttpheadersize会有所帮助,并将此行添加到我的application.properties:

server.tomcat.max-http-header-size=-1
Run Code Online (Sandbox Code Playgroud)

(-1为无限制)我在我的Thymeleaf表格中设置method ="post".任何其他方式增加256限制?我不想分页我的结果.谢谢你的帮助.

Lea*_*edo 15

我认为这与AutoGrowCollectionLimitSpring有关,尝试在控制器中包含此代码以增加它:

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.setAutoGrowCollectionLimit(768);
}
Run Code Online (Sandbox Code Playgroud)

在Spring论坛中查看主题,也可以在此处的官方文档中查看.