【问题标题】:Pass HTML dropdown value to JSTL sql:query将 HTML 下拉值传递给 JSTL sql:query
【发布时间】:2012-02-22 15:34:05
【问题描述】:

我有一个 HTML 下拉菜单,我想在其中将选定的值作为参数传递给 SQL 查询。

这是下拉菜单:

<select name="ifs_db_options" onchange="submit()">
    <c:forEach var="ifs_db1" items="${ifs_db1.rows}">
        <option value="${ifs_db1.rows}" selected>${ifs_db1.img_hub}</option>
    </c:forEach>
</select>

这是我的查询

<c:set var="hub" value="${ifs_db1}"/>
<sql:query var="ifs_db" dataSource="jdbc/postgresDB">
    select * from ifs_db where img_hub = ?
  <sql:param value="${hub}" />
</sql:query>

我想从下拉“值”中传递参数

<c:set var="hub" value="value of the dropdown"/>

这样我就可以将其用作查询"where img_hub = ?" 的参数。

【问题讨论】:

    标签: java html jsp jstl


    【解决方案1】:

    它可以通过${param} 以通常的方式作为请求参数使用,使用您为&lt;select&gt; 元素提供的确切名称作为键。

    给定

    <select name="ifs_db_options">
    

    在EL中可以如下获取

    ${param.ifs_db_options}
    

    请注意,对于普通的生产应用程序,JSTL SQL 标记库为discouraged,因为它与代码紧密耦合。

    【讨论】:

    • 会不会是这样: select * from ifs_db where img_hub = ?
    • 跟进问题..一旦我选择了其中一个选项,它会自动工作吗?
    • 不管是别名&lt;c:set&gt;还是直接设置在&lt;sql:param&gt;。 EL只是EL。至于后续问题,假设您已将其放在&lt;form&gt; 中,那么是的。您已将 JavaScript submit() 调用添加到下拉列表的 onchange 事件处理程序。只有当客户端禁用 JavaScript 时它才会起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多