我在netbeans工作,我有一个JSP页面,其中有一个需要从MySQL数据库中提取选项的下拉列表。我无法弄清楚如何让MySQL数据库填充下拉列表。
<form action="student/studentQueryResponse.jsp">
<strong>Select a student:</strong>
<select name="studentID">
<c:forEach var="row" items="${student.rowsByIndex}">
<c:forEach var="column" items="${row}">
<option <c:out value="${column}"/>
</option>
</c:forEach>
</c:forEach>
</select>
<input type="submit" value="submit" name="submit" />
</form>
答案 0 :(得分:1)
您从哪里粘贴代码?它使用 rowsByIndex 属性,因此它显然适用于jstl标记(并且由知道它的人编写)。另一方面,在这种情况下使用两个嵌套的forEach子句是没有意义的:你将为每个学生数据(名字,姓氏,等等)结束一个单独的选项,而不是单个选项学生。它看起来好像是原始代码用于某种数据网格,并且在没有任何理解的情况下进行了修改。
在充分尊重的情况下,我认为你还没有准备好编写应用程序 - 并且你不会通过尝试学到很多东西,因为你很快就会遇到更难和更难的主题。如果您被迫继续该应用程序,请尝试转储JSF并专注于JSP / JSTL,我相信它对初学者的警告较少,它将使您更容易学习Web应用程序的基础知识。
那就是说,你要找的答案是:
<sql:setDataSource dataSource="jdbc/db" />
<sql:query var="students">
select * from students
</sql:query>
<form action="student/studentQueryResponse.jsp">
<strong>Select a student:</strong>
<select name="studentID">
<c:forEach var="row" items="${students.rowsByIndex}">
<option id="<c:out value="${row[0]}"/>"><c:out value="${row[1]}"/></option>
</c:forEach>
</select>
<input type="submit" value="submit" name="submit" />
</form>
您必须使用自己的sql查询替换sql查询,并且必须在应用程序服务器和 web.xml 中注册数据源 jdbc / db 文件。当然,您还需要一个MySQL驱动程序。我假设您需要学生的ID,并且这是您查询的第一列。
答案 1 :(得分:0)
是的,BalusC的担忧是对的,如果您不使用JSF,那么它不是JSF项目。如果你把它作为一个JSF项目,那么 selectOneItem selectOneMenu 可以为你做到这一点。就数据库连接而言,干净的方式理想情况是在您的支持bean中建立连接,使用数据源或仅使用普通的jdbc或其他方法。