<c:forEach>迭代标签无法从数据库读出数据
小弟是初学者,编写了一个投票小程序,但是无法从数据库里读出数据,运行也不报错,页面代码如下:
<c:set var="options" value="${requestScope.optionlist}"/>
<c:if test="${empty options}">
<tr><td colspan="2">无投票选项</td></tr>
</c:if>
<c:if test="${!empty options}">
<c:forEach var="option" varStatus="ovs" items="${options}">
<tr>
<td style="padding-left:20">${option.optionName}</td>
<td align="center"><input type="radio" name="movie" value="${option.id}" onclick="message.innerHTML=''"></td>
</tr>
<tr><td colspan="2"></td></tr>
</c:forEach>
/shiyan/src/com/servlet/IndexServlet.java为:
List<OptionBean> options=new OptionDao().getOptions();
request.setAttribute("optionlist",options);
RequestDispatcher rd=request.getRequestDispatcher("/index.jsp");
rd.forward(request,response);
xml配置为:
<servlet>
<servlet-name>index</servlet-name>
<servlet-class>com.servlet.IndexServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>index</servlet-name>
<url-pattern>/index</url-pattern>
</servlet-mapping>
操作数据库的代码:
public OptionDao(){
mydb=new DB();
}
public List<OptionBean> getOptions(){
String sql="select * from tb_option order by option_order";
List<OptionBean> options=getList1(sql,null);
return options;
}
private List<OptionBean> getList1(String sql,Object[] params){
List<OptionBean> options=null;
DB mydb=new DB();
mydb.doPstm(sql,params);
try {
ResultSet rs = mydb.getRs();
if(rs!=null){
options=new ArrayList<OptionBean>();
while(rs.next()){
OptionBean single=new OptionBean();
single.setId(rs.getInt(1));
single.setOptionName(rs.getString(2));
single.setOptionBallot(rs.getInt(3));
single.setOptionOrder(rs.getInt(4));
options.add(single);
}
rs.close();
}
} catch (
SQLException e) {
e.printStackTrace();
}
return options;
}
然后连接数据库的代码均没有问题,请问问题出在哪里?
------解决方案--------------------select * from tb_option order by option_order
上面是*号,下面取的时候就rs.getInt("id");
一定要用rs.getInt(数字)的话把*号写成各个字段
------解决方案--------------------调试一下,是问题总会解决的。
可以用变量接受你想要的值,然后打印出来,看看是不是你想要的……
------解决方案--------------------<c:set var="options" value="${requestScope.optionlist}"/>
<c:if test="${empty options}">
<tr><td colspan="2">无投票选项</td></tr>
</c:if>
${option.optionName}
你声明有变量是options,但你在下面引用时是用的option,所以没有数据!
------解决方案--------------------首先,<c:set var="options" value="${requestScope.optionlist}"/> 没意义
你下面用的options都可以直接用${requestScope.optionlist}。试试