getParameter()接收參數報錯NullPointerException

一個空格引發的“慘案”

前期(我明明在表單裏填數據了,爲啥會是NPE呢)

在用getParameter()接收前端表單傳過來的數據時報錯NPE,剛好這個報錯的地方是BigDecimal類型,我是第一次用這個類型,第一感覺是沒用過這個類型,可能是String轉BigDecimal時出錯了,然後嘗試強制轉換,各種谷歌,連stackover的英文我都忍着看了!but,大約花了1h都沒有解決,然後又搜索前端頁面,懷疑是不是因爲這個number類型的鍋,然後導致了在各種String,BigDecimal,number轉換的時候出了問題。嘗試着找了一下里面到底是什麼類型,但是又沒有搞明白(其實前端我也是渣渣,哈哈哈)。

總之就是前期把重點放在了各種類型,以及類型轉換上面,因爲我在測試的時候前端的表單裏我確實是填數據了,而且還嘗試了int,double等各種類型,因爲我填了數據,所以就忽略了數據是否真的傳過來了的問題。而且報錯是NPE,所以我就很不理解,我明明填數據了,爲啥會是NPE呢。

中期(發現問題所在)

後來一位羣友發現了我在接收參數的時候後面多了一個空格!附上聊天截圖,對我而言簡直就是段“艱辛的奮鬥史”
代碼
在這裏插入圖片描述
經過測試之後發現,確實爲空了
在這裏插入圖片描述

後期(探索問題本質)

好吧,這下找到問題了,但是爲啥會爲空呢,字符串後面加個空格就變爲null了嗎,我還特地測試了一下
在這裏插入圖片描述
發現,就算是字符串後面加個空格也是原樣輸出啊,爲啥這裏就算空呢?一番搜索無果後決定去看一下getParameter的官方api文檔
在這裏插入圖片描述
連英文帶翻譯的看了一下,似乎沒有我想要的答案,官方api都沒有找到答案,難不成我要去看一下源碼?看一下底層是怎麼實現的?emmm,怎麼有種我是大神的感覺,手動笑哭。後來還是萬能的羣友,一語驚醒夢中人!

在這裏插入圖片描述
在這裏插入圖片描述
我一直以爲它會接收的值會是 “參數+空格”,沒想到是去匹配“參數+空格”了,沒有這個值,所以結果爲空,終於搞懂了這個問題。
總之,還是要多動手,多寫,遇到問題了多思考,我以前刷視頻不少,但是沒有咋動手寫過,還是要多動手寫才行。

後續

好奇心又讓我把前端裏的名稱後面加了一個空格,這樣看看能不能匹配到,第一次重啓tomcat後還是Null,羣友提示看了一下網頁源代碼,名稱後面並沒有空格,又重啓了一次後可以匹配到數據了。網頁源代碼名稱後面也多了一個空格。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章