標籤:framework 代碼 地址 size lease sso 決定 特殊字元 contex
項目遇到了這個錯誤,spring mvc 竟然還有這個漏洞.
org.springframework.beans.InvalidPropertyException: Invalid property ‘detail[256]‘ of bean class [com.suning.asvp.mer.entity.InviteCooperationInfo]: Index of out of bounds in property path ‘detail[256]‘; nested exception is java.lang.IndexOutOfBoundsException: Index: 256, Size: 256 at org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:833) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.beans.BeanWrapperImpl.getNestedBeanWrapper(BeanWrapperImpl.java:576) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:553) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:914) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:76) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.validation.DataBinder.applyPropertyValues(DataBinder.java:692) ~[spring-context-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.validation.DataBinder.doBind(DataBinder.java:588) ~[spring-context-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.web.bind.WebDataBinder.doBind(WebDataBinder.java:191) ~[spring-web-3.1.2.RELEASE.jar:3.1.2.RELEASE] at org.springframework.web.bind.ServletRequestDataBinder.bind(ServletRequestDataBinder.java:112) ~[spring-web-3.1.2.RELEASE.jar:3.1.2.RELEASE]
解決方案,在Action裡重寫SpringMVC限制的數組的方法:
@InitBinder public void initBinder(WebDataBinder binder) { // 設定List的最大長度 binder.setAutoGrowCollectionLimit(10000); }
這段代碼我發現在項目在解決架構缺陷的時候已經在baseAction裡重寫了這個方法,在其他Action裡是繼承了baseAction,在開發環境裡測試時沒有問題的,但在測試環境裡就不生效了,最後想到了兩個解決方案, 1.直接在自己的Action在去重寫上面的方法 2.在前台把數群組轉換成Json串,傳到後台把Json串轉換成集合方案一:其實上面的那段代碼寫在baseAction裡就是為了在其他的Action裡不用重寫了,但是在測試環境不生效,很鬱悶,只有先這樣子了方案二: JSON.stringifier(myObject); 但傳到後台是報錯,應為存在特殊字元方案三:開發環境可以,測試環境不可以,會不會是其他問題,於是又讓部署人員清除下部署套件緩衝,但是還是沒用,可能就是兩個環境存在差異吧最後還是用方案一解決的,因為時間比較緊,項目快上線了,而且如果改成json串,改動點比較多,最後還是決定用方案一以前都不知道這個問題,工作也是一個學習的過程
原文地址:50839218
SpringMVC提交數組時不能超過256個值(轉)