我有一个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> > Add book</a>
答案 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");
然后你当然会把它变成某种数字类型。