1. 程式人生 > >Spring框架 boolean型別命名is開頭會引起序列化錯誤

Spring框架 boolean型別命名is開頭會引起序列化錯誤

在前臺頁面上,js程式碼裡面給model的一個boolean屬性設定值true,然後ajax傳到後臺之後,一直得不到這個正確的值,反覆檢查都沒發現問題,覺得ajax請求的方式和引數都是OK的,後臺springMVC接收引數啥的,也是OK的,但是就是一直接收不到這個boolean屬性的正確值,幾經周折,終於發現問題所在。
就是這個 boolean屬性的命名,導致的問題。如果你的屬性名稱命名為isXXXX的話,那估計就和我的一樣了。
看下面測試吧。

假設我的這個boolean屬性命名為isActive,然後就有如下測試結果。可以看到。前後臺所傳遞的值是不一致的。





後面,我把屬性名稱稍作修改,然後就發現,這個時候,這個值傳遞就OK了。可以看下面的測試圖。






然後還有個問題,如果你的屬性命名為isXXX,那麼你在提取這個資料到前臺的時候,你可以看到你的這個名為isXXX的屬性變成了XXX。而isXXX這個屬性就不見了。
據此估計,這可能和springMVC的或者tomcat的自動注入IOC有關係吧。根據的可能就是這個getter和setter來生成屬性的。但是你的屬性名稱為isXXX的話,他的getter就是isXXX,那麼他給你一轉換就變成了XXX,而你isXXX這個屬性就這麼不見了。這個我就沒上圖了,我記得我當時出現過這個問題,只是當時沒記錄。


這個是一個Java開發手冊上的一條強制程式碼規範要求,要是你提前知道這個規範的話,就不會出現我這個bug了。

不要問什麼是rpc框架了,我也不知道,不是簡單一兩句話就可以說明白的,但是我的專案是springMVc框架,他就出這個問題啦。