2015-03-02 48 views
5

我正在使用Spring Boot 1.2.2與Thymeleaf。 我的問題是我嘗試在表單中發佈很長的項目列表(一些標籤,一個複選框),無法執行我列表中的很多項目。 (我測試了小名單和它的工作。)不能發表與許多(超過256)的值的形式

首先,我用的碼頭,但得到了一個錯誤,它說:我搜索

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爲無限制)我在Thymeleaf形式設置方法=「後」。任何其他方式來增加256限制?我不想分頁我的結果。謝謝你的幫助。

+0

只是一個快速評論。我使用的是Spring Boot 1.3.3,當我設置server.tomcat.max-http-header-size = 0時,它實際上並沒有改變配置。單步執行代碼,這意味着使用默認值,即8192.我將它設置爲一個很大的值65536,並且工作。 – 2016-03-31 22:12:48

回答

7

我認爲這是關係到春天AutoGrowCollectionLimit,嘗試包括,以增加它在你的控制器驗證碼:

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

檢查this線程春季論壇,也是官方文檔here英寸

+1

它解決了這個問題。 – svenhornberg 2015-03-03 15:15:19