2016-04-21 77 views
1

我有一個jsp頁面,根據用戶需要查看的內容(加載圖書信息)從數據庫加載內容。但我也需要用戶輸入以在同一個jsp頁面輸入數量。如何將輸入值作爲鏈接的請求參數發送到servlet?

我使用JSTL標記來從數據庫中檢索信息,並使用下面的代碼顯示。

<c:forEach var="book" items="${listBooks.rows}"> 
    <tr> 
     <td><c:out value="${book.bookID}"/></td> 
     <td><c:out value="${book.bookName}" /></td> 
     <td><c:out value="${book.bookType}" /></td> 
     <td><c:out value="${book.Price}" /></td> 

該信息設置爲c:param,所以我可以在servlet中使用它。

我有一個HTML文本供用戶輸入數量。我的問題是我怎麼能發送此作爲一個參數,因爲請求對象的servlet不會檢索量參數(我猜這是因爲它不是引導到特定的servlet(AddBookServlet)表格內。

我的代碼

<form> 
<td>Quantity: <input type="text" name="quantity" value="" style="height:30px; width: 45px"/> 

</td> 
</form> 
<td><a style="color: blue;" class="myButton1" 
     href=<c:url value="/AddBookServlet"> 

     <c:param name="id" value="${book.bookID}"/> 
     <c:param name="name" value="${book.bookName}"/> 
     <c:param name="type" value="${book.type}"/> 
     <c:param name="amount" value="${book.price}"/> 

     <c:param name="seat" value="${param.quantity}" /><%-- not sure if this is the way to do it--%> 

</c:url> > &nbsp;&nbsp;&nbsp; Add book</a> 

回答

2

以前從未見過這種方法:爲什麼沒有動作,方法和提交按鈕的表單?

如果按照打算使用它的方式使用它,應該沒問題。

您可以預先填充從數據庫中檢索值形式,並保留量輸入字段爲空,然後檢索量的屬性,你通常會做

<c:forEach var="book" items="${listBooks.rows}"> 
    <form action = "/AddBookServlet" method = "post"> 

     <td>Book name: <input type="text" name = "bname" value="${book.bookName}"/></td> 
     <!-- put the rest of the fields here !--> 

     <td>Quantity: <input type="text" name="quantity" value="" style="height:30px; width: 45px"/></td> 

     <input type="submit" value="Add Book"/> 

    </form> 
</c:forEach> 

現在,如果你想防止用戶從編輯輸入字段除了數量,我認爲是你試圖實現你可以添加readonly HTML屬性(或設置輸入類型隱藏,如果由於某種原因,你不希望該字段顯示給用戶)

<td>Book name: <input type="text" name = "bname" value="${book.bookName}" readonly="readonly"> </input></td> 

然後在"/AddBookServlet"的doPost方法中,您應該能夠檢索每個調用request.getParameter("nameOfParameter")

+0

的字段爲什麼將該書的名稱作爲輸入字段?只需將其打印出來並將其ID在隱藏字段中傳遞即可。 – Peter

+1

@彼得我同意你的看法,但我的印象是,他試圖將每個字段傳遞給servlet作爲參數,可能不會從db –

+1

再次檢索它們,如果他想繼續與書籍對象一起工作,但我現在明白了。只讀屬性 - 禁用字段的獎勵分數沒有被提交。 :) – Peter

0

你過於複雜是我想忘掉<c:param>這裏。

對於<form>,你應該定義action="YourServletName"method="GET"method="POST",然後在servlet的doGet()doPost()可以讀取參數是這樣的:

String quantity = request.getParameter("quantity"); 

那麼你當然會它轉換爲某種數字類型的。

相關問題