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

时间:2015-03-02 13:53:33

标签: spring-boot thymeleaf embedded-jetty 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)

我搜索了这个post。结果我添加了

applicationDefaultJvmArgs = ["-Dorg.eclipse.jetty.server.Request.maxFormKeys=8000"]

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

java.lang.IndexOutOfBoundsException: Index: 256, Size: 256
at java.util.ArrayList.rangeCheck(ArrayList.java:635)

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

server.tomcat.max-http-header-size=-1

( - 1为无限制)我设置方法=" post"以我的Thymeleaf形式。任何其他方式增加256限制?我不想分页我的结果。谢谢你的帮助。

1 个答案:

答案 0 :(得分:14)

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

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

在Spring论坛中查看this主题,也在官方文档here中查看。