我想知道是否有人可以在JSP中给我一些预先填充的指针:
所以我试图根据客户数据库记录中的值预先填充一个复选框。如果字段中有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 :(得分:10)
Strings为objects,而不是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
。或者,甚至更多,如果它实际上表示布尔状态(它只能是true
或false
),那么您应该使用boolean
代替。您可以直接在if
条件下使用它而无需进行比较。