我为供应商列表的下拉框编写了查询值("全职","兼职"),即我想为供应商合同选择列表添加下拉框它有2个值,full time
和part time
这是我的代码:
<td><b>Vendor Contract<font color="red">*</font></b></td>
<td>
<select id="Vendor Contract" name="Vendor Contract" style="width: 155" >
<option selected value="">-select-</option>
<%
Iterator<String> viterator = VendorList.iterator();
while(viterator.hasNext()){
String selected = "";
String Vendor = viterator.next();
if(Vendor.equalsIgnoreCase(VendorList))
selected = "Selected";
%>
<option <%=selected%> value="<%=Vendor%>"><%=Vendor%></option>
<%}%>
</select>
</td>
我收到的错误如下所示:
The method equalsignorecase string in the type string isn't applicable for the arguments(array list(string))
如何修复此错误?
答案 0 :(得分:1)
您传递了ArrayList
到equalsIgnoreCase
方法,该方法需要String
类型。因此,您无法将String
与Strings
列表进行比较。
从您的代码中我认为您需要从列表中确定所选元素,而您的代码无法做到这一点,因为您始终在比较相同的值。
您需要做的是获得另一个要依赖的因素,例如创建一个包含供应商值的类,如果选择了另一个值,则需要:
class VendorItem {
private String value;
private boolean selected;
// setters and getters.
}
然后在您的代码中应该看起来像
Iterator<VendorItem> viterator = vendorItems.iterator();
while(viterator.hasNext()) {
String selected = "";
VendorItem vendor = viterator.next();
if(vendor.isSelected()) {
selected = "Selected";
}
答案 1 :(得分:0)
equalsIgnoreCase
方法ArrayList
收到一个字符串。您正在通过sed
。
不能将字符串与字符串列表进行比较。传递你想要比较的字符串。
答案 2 :(得分:0)
问题是.equalsIgnoreCase()
接受String
类型的参数,并且您正在传递List
String
。您必须打算将用户选择与List进行比较。注意,避免使用jsp scriplets,而是尝试使用JSTL核心标记。