Gar*_*ski 4 java jsp if-statement
我想知道是否有人可以在JSP中给出一些预先填充的指针:
所以我试图根据客户数据库记录中的值预先填充一个复选框.如果字段中有1,则检查复选框,另一个选项为0 - 其中复选框应为空.
我目前在输入中使用此代码:
<%if (UPDATEDPREFERENCES != null)
{
if (ISNEWSLETTER != "0") {
out.println("checked");
}
}
%>
Run Code Online (Sandbox Code Playgroud)
所以它会是:
<input type='checkbox' class="newsletter" name='temp_ISNEWSLETTER_FIELD' id="temp_ISNEWSLETTER_FIELD" <%if (UPDATEDPREFERENCES != null)
{
if (ISNEWSLETTER != "0") {
out.println("checked");
}
}
%>/>
Run Code Online (Sandbox Code Playgroud)
就目前而言,它预先填好了.但是,如果字段为0,它也会填充.如果我将其更改为:
if (ISNEWSLETTER == "1")
Run Code Online (Sandbox Code Playgroud)
然后复选框为空,无论它是1还是0.
我错过了一些明显的东西吗 我不是开发人员,我在纽约,我的支持在比利时 - 他们都离开了这一天.
Bal*_*usC 10
字符串是对象,而不是基元.使用equals(),而不是==/ !=.该==/ !=不会检查它们是否包含相同的值,但如果它们指向同一个对象的引用.该equals()会检查它们是否包含相同的值.
所以,而不是if (ISNEWSLETTER != "0")你应该使用
if (!ISNEWSLETTER.equals("0"))
Run Code Online (Sandbox Code Playgroud)
而不是if (ISNEWSLETTER == "1")你应该使用
if (ISNEWSLETTER.equals("1"))
Run Code Online (Sandbox Code Playgroud)
此问题与JSP无关.在普通的Java类(这种代码实际上属于这种类)中执行此操作时,您会遇到完全相同的问题.
作为替代方案,因为它们代表数字,你也可以转换ISNEWSLETTER为int.这是一个原始的,所以你应该能够使用==/ !=通常的方式.您可以根据需要将a转换String为int使用Integer#parseInt().或者,甚至更多,如果它实际上代表一个布尔状态(它只能是true或false),那么你应该boolean改为使用.您可以直接在if条件下使用它而无需进行比较.