在JSP页面中填写下拉列表

时间:2010-12-23 15:13:25

标签: mysql jsp netbeans html-select

我在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>

2 个答案:

答案 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或其他方法。