2016-04-15 56 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