2011-10-06 109 views
4

我想知道是否有人可以給我一個JSP的預填充指針:如何比較if-else語句中的字符串?

所以我試圖根據客戶數據庫記錄中的值預填充複選框。該複選框將被檢查,如果該字段中有1,則另一個選項將爲0 - 複選框應該爲空。

我目前使用此代碼內輸入:

<%if (UPDATEDPREFERENCES != null) 
{ 
    if (ISNEWSLETTER != "0") { 
     out.println("checked"); 
    } 
} 
%> 

所以這將是:

<input type='checkbox' class="newsletter" name='temp_ISNEWSLETTER_FIELD' id="temp_ISNEWSLETTER_FIELD" <%if (UPDATEDPREFERENCES != null) 
{ 
    if (ISNEWSLETTER != "0") { 
     out.println("checked"); 
    } 
} 
%>/> 

因爲它的立場,它預填充的罰款。但是,如果我把它改爲讀它也填充如果該字段爲0:

if (ISNEWSLETTER == "1") 

那麼複選框是空的它是否是一個1或0

我失去了一些東西明顯?我不是開發人員,我在紐約,我的支持在比利時 - 他們已經全部離開了。

+0

這裏我們再次...這個功課一週左右嗎?本週幾乎每天都會在'[jsp]'中回答一些常見問題:/ – BalusC

+0

感謝BalusC - 正如我所說的,我不是開發人員。儘管你的幫助是讚賞的。感謝您花時間回答。 –

+0

我非常自由地改進標題,以便更好地搜索(我無法立即發現任何重複的問題,但我確信它們存在),並且可以更好地指導未來的重複。 – BalusC

回答

10

Stringsobjects而不是primitives。使用equals(),而不是==/!===/!=不會檢查它們是否包含相同的值,但是它們是否指向相同的對象引用。 equals()將檢查它們是否包含相同的值。

所以,相反的if (ISNEWSLETTER != "0")你應該使用

if (!ISNEWSLETTER.equals("0")) 

,取而代之的if (ISNEWSLETTER == "1")你應該使用

if (ISNEWSLETTER.equals("1")) 

這個問題是不相關的JSP。在普通的Java類中(這種類型的代碼實際上屬於所屬的類),您會遇到完全相同的問題。

作爲替代方案,由於它們代表數字,因此您也可以將ISNEWSLETTER轉換爲int。這是一個原始的,所以你應該能夠以通常的方式使用==/!=。如有必要,您可以使用Integer#parseInt()String轉換爲int。或者,甚至更多,如果它實際上代表布爾狀態(它只能是truefalse),那麼您應該使用boolean代替。您可以直接在if條件下直接使用它,而無需進行比較。

+0

感謝BalusC,你的方法if(ISNEWSLETTER.equals(「1」))完美工作。謝謝你的幫助! –