我需要从数据库中填充选择框。与数据库的连接是成功的,我可以检索并插入到数据库。我尝试使用以下代码填充选择框。但它显示错误“迭代器无法解析为类型”。 从数据库中检索的Java代码是
package servicescheduler.pack;
import java.text.*;
import java.util.*;
import java.sql.*;
public class listObject
{
static Connection currentCon = null;
String sql="select * from center_point_map where service_center='Radiology';";
public List getlist()
{
ArrayList<String> list=new ArrayList<String>();
try
{
currentCon = ConnectionManager.getconnection();
}
catch (Exception ex)
{
System.out.println(" An Exception has occurred! " + ex);
}
if(currentCon!=null)
{
System.out.println("You made it, take control your database now!");
try
{
PreparedStatement prest = currentCon.prepareStatement(sql);
ResultSet rs = prest.executeQuery();
while(rs.next()) {
list.add(rs.getString(1));
}
System.out.println(list.get(0));
prest.close();
rs.close();
return list;
}
catch (SQLException s)
{
System.out.println("SQL statement is not executed!"+s);
}
catch (Exception e)
{
e.printStackTrace();
}
}
return list;
}
}
jsp代码是
<%@page import="servicescheduler.pack.listObject"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org /TR/html4 /loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<select>
<%
Iterator it = new listObject().getlist();
while(it.hasNext()) {
out.write("<option value=\""+ it.getFieldA()+ "\">"+ it.getFieldB() +"\">");
}
%>
</select>
</body>
</html>
答案 0 :(得分:1)
由于import语句导致的错误。你还需要在jsp中导入Iterator。默认包是java.lang
。但是我们在这里使用java.util.*
中提供的Iterator。
所以你需要先导入java.util包。
<%@page import="java.util.*"%>
并使用此
Iterator it = new listObject().getlist().iterator();
答案 1 :(得分:0)
我认为问题在于您将List分配给您在jsp代码中创建的迭代器。看看吧。
因此代码应为:
Iterator it = new listObject().getlist().iterator();
答案 2 :(得分:0)
你的jsp代码中有两个错误点
第一个:无法从List转换为Iterator。它应该是Iterator it = new listObject().getlist().iterator();
第二个:在while循环中,您必须使用it.next()
将指针位置更改为下一个