2016-04-15 28 views
0

我看到过类似的问题,但答案并不那么令人信服。如何将HTML下拉值传递给JSTL sql:query?

我的程序需要根据下拉值加载内容。我使用JSTL sql:query,所以我需要将下拉值传递给sql:query标记。

我的代码

Select Book Type <br> 
<select name="bookdropdown"> 
    <option value="Crime">Crime </option> 
    <option value="Comedy">Comedy</option> 
    <option value="Mystery">Mystery</option> 
</select>  

//SQL Datasource configuration code 


     <sql:query var="listBooks" dataSource="${myDS}"> 
      SELECT * FROM Books WHERE type = ? 
      <sql:param value="${bookdropdown}" /> 
       </sql:query> 

有一个直接的方式来加载内容基础上,下拉值就像我已经尝试过我想要什么?或者我应该通过servlet传递参数与URL?

谢谢

回答

0

html代码在浏览器的客户端工作。 JSTL代码在服务器端工作。为了将选定的项目传递给服务器端,您需要提交表单,并可以将表单的内容作为参数访问:${param.bookdropdown}。我不会开始混合阿贾克斯这个老技术。

<sql:query var="listBooks" dataSource="${myDS}"> 
     SELECT * FROM Books WHERE type = ? 
     <sql:param value="${param.bookdropdown}" /> 
      </sql:query> 
+0

你建议我应该通过servlet来加载基于下拉值的内容? – dav191

+0

我不建议这样的事情,因为我不知道你试图在这个问题之外做什么。我一定会考虑是否可以完全取代JSTL。但是这样的问题超出了SO的范围。 – Shadow

+0

*“完全替换JSTL”*更正:“替换JSTL'sql'(和'xml')标签库”。他们自2001年以来确实感到灰心(另见http://stackoverflow.com/tags/jstl/info),但请不要过度概括'c','fmt'和'fn' taglibs,它们仍然有它们的价值到今天。 – BalusC