如何将输入值作为链接的请求参数发送到servlet?

时间:2016-04-21 02:54:14

标签: jsp jstl el

我有一个jsp页面,根据用户需要查看的内容(加载书籍信息)加载数据库中的内容。但我还需要用户输入以在同一个jsp页面输入数量。

我使用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 个答案:

答案 0 :(得分: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")的每个字段

答案 1 :(得分:0)

我认为你过于复杂了。在这里忘掉<c:param>

对于<form>,您应该定义action="YourServletName"method="GET"method="POST",然后在servlet的doGet()doPost()中定义你可以读取这样的参数:

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

然后你当然会把它变成某种数字类型。