我們上次偶然發現了一個問題,我們在一個龐大的項目中,然後按照 spring web flow 走下去,最後一步提交,提交成功,但是回到某個頁面上的時候,總是報錯,說某個變數 比如var projectInfo,這個變數為null。
後來我們仔細看了下代碼,原來是因為這個頁面上有個欄位是textarea,然後它會支援多行輸入,多行也就是\n,然後在extjs看來,它無法對於一個包含\n的字串進行decode,所以decode的結果就是null
我們實驗如下:
(1)Ext.decode一個包含\n的字串:
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/113TT641-0.png" title="6.png" />
這裡可以看出decode會失敗。
(2)Ext.decode一個不包含\n或者包含吧所有\n都轉為\\n之後的字串:
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/113TR247-1.png" title="7.png" />
這裡看出decode會成功。
基於這個思路我們就找到正確的解決方案了,我們只需要吧所有'\n'替換成'\\n'就可以了,為此在js代碼中:
原來是:
var projectInfo = Ext.decode(decodeURIComponent('${projectInfoJSONData}',true);
現在改成:
var projectInfo = Ext.decode(decodeURIComponent('${projectInfoJSONData}').replace(/\n/g,'\\n'),true);
本文出自 “平行線的凝聚” 部落格,請務必保留此出處http://supercharles888.blog.51cto.com/609344/1222093