Spring接受前臺的數據超過256出現以下異常:

轉載自:http://blog.csdn.net/dracotianlong/article/details/47604723html

Spring接受前臺的數據超過256出現以下異常:java

org.springframework.beans.InvalidPropertyException: Invalid property 'specificationValues[256]' of bean class [com.sencloud.entity.Specification]: Index of out of bounds in property path 'specificationValues[256]'; nested exception is java.lang.IndexOutOfBoundsException: Index: 256, Size: 256
    org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:811)
    org.springframework.beans.BeanWrapperImpl.getNestedBeanWrapper(BeanWrapperImpl.java:554)

溯源了下Spring的代碼,找到了DataBinder,先解釋下DataBinder類的做用,見連接spring

http://docs.spring.io/spring/docs/1.2.x/api/org/springframework/validation/DataBinder.htmlapi

其中有一句app

Binder that allows for binding property values to a target object. The binding process can be customized through specifying allowed fields, required fields, and custom editors.
Note that there are potential security implications in failing to set an array of allowed fields. In the case of HTTP form POST data for example, malicious clients can attempt to subvert an application by supplying values for fields or properties that do not exist on the form. In some cases this could lead to illegal data being set on command objects or their nested objects. For this reason, it is highly recommended to specify the allowedFields property on the DataBinder.
 

大概意思是前臺的Form 元素綁定到 後臺的JaveBean對象,作的一個映射,可是這個映射的List長度不能夠超過256ui

反編譯的源碼以下:this

 

 

解決以下:重set下autoGrowCollectionLimit,當作綁定的時候set爲1024或者更大spa

/**
     * 數據綁定
     * 
     * @param binder
     *            WebDataBinder
     */
    @InitBinder
    protected void initBinder(WebDataBinder binder) {
        binder.setAutoGrowCollectionLimit(2048);  
        
    }
相關文章
相關標籤/搜索