首頁 > 軟體

解決request.getParameter取值後的if判斷為NULL的問題

2022-03-02 13:01:32

request.getParameter取值後if判斷為NULL

以下為我程式的一部分,Auto_space_time_ok.jsp檔案從Auto_space_time.jsp獲取的值程式碼,此處博主需要做一個判斷,當danwei 等於“學校”字串時,將 zhuangtai的值賦值給zhengzhuang 

開始時,用語句判斷

if(danwei = "學校") zhengzhuang = zhuangtai;

結果獲取不到值,輸出語句為null。

System.out.print(zhengzhuang);

將判斷語句更改為

if( "學校".equals(danwei)) zhengzhuang = zhuangtai;

方可解決問題。

查明原因

此處我們比較的是數值,基本資料型別,即原始資料型別。byte,short,char,int,long,float,double,boolean,他們之間比較數值時,可用直接用(==),而作為String,Integer,Date 這些複合型資料型別(類),比較數值時用.equals,此時(==)比較的是地址。 

servlet中request.getParameter得到null的幾個可能

本文針對的是jsp中form表單提交後servlet獲取到null的情況

可能性一

jsp中需要輸入的input標籤中沒設name屬性值

正確例如:

<input  name="password" value="${user.password}" class="textinput" />

因為表單提交後,如果想用servlet中request.Parameter()來獲取值,那麼配套的是input中的name的值而不是id的

value對於這有沒有都是可以的。

可能性二

form中的action屬性跟Webservlet中的名不一致

可能性三

form表單的提交方式應該是post而不是get(method屬性的值)

正確例如:

<form action="${pageContext.request.contextPath}/Modify" method="post" id="modifyForm">

一般存在於servlet檔案的開頭幾行的:

@WebServlet("/Modify")

可能性四

負責表單提交的按鈕的問題

眾所周知(狗頭保命),當你需要提交一份表單,你同時還需要一個“按鈕”

可能也有不用按鈕的,但是我目前所寫的都大抵是需要的。

當你無法使用input的submit提交按鈕而是別的東西例如一個超連結時,你若是在超連結的href裡寫了和form的action中一樣的內容,那恭喜,你大概率就會得到一個null。

像這樣:

<form action="${pageContext.request.contextPath}/Modify" method="post" id="modifyForm">
<a href="${pageContext.request.contextPath}/ModifyUser?id=${user.id}" rel="external nofollow"  >

這其實也是我所遇到的問題,我是這樣解決的

<script>
function modify(){
    document.getElementById("modifyForm").submit();
}
</script>
<a href="#" rel="external nofollow"  onclick="modify()">

也就是寫了個js方法並在a中onclick呼叫,構成當點選這個超連結時提交表單的功能。form不動。然後便解決了。。

最近跟著上課做了個專案,其中出現了上述問題,雖然不是個大問題,但是花費了較長時間解決,故寫此文,希望對你有所幫助。

若你沒有在這裡找到解決方法,再去耐心的檢查程式碼,可能就是哪個地方粗心寫錯了罷了;不要放棄,不能讓如此小問題這個成為你以後的一道坎。 

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com