我在JSP中有以下代码从servlet获取输入并将输出传递给另一个servlet。
<%ShoppingServlet ss = new ShoppingServlet();
ArrayList<Item> itemList = ss.viewItems(); // results from another servlet
for (Item it: itemList){
out.print("<tr>");
out.print("<td>"+it.getId()+"</td>");
out.print("<td>"+it.getName()+"</td>");
out.print("<td>"+it.getDesc()+"</td>");
out.print("<td>"+it.getPrice()+"</td>");
out.print("<td><input type=\"number\" min = \"0\" placeholder=\"0\" size=\"2\"></td>");//user input for quantity
out.print("</tr>");
}
%>
我想要做的是允许用户更新数量,然后将所有最终值传递给另一台服务器。
我想过打印&#34; td&#34;元素进入&#34;输入&#34;元素,但在这种情况下,我不能从原始servlet创建的arrayList中动态查看值。
我想知道是否有办法获取生成的值并将它们传递给下一个servlet。
所有的帮助都表示赞赏,提前谢谢。
答案 0 :(得分:0)
执行此操作的一种方法是让您的输入“name”为表单item_。您将拥有以下值:
现在,当服务器提交表单时,您的servlet可以迭代请求参数。假设一个名为“request”的HttpServletRequest对象:
for( String param : request.getParameterNames() ){
if( param.startsWith("item_") {
String itemId = param.substr(5);
String quantity = request.getParameter(param);
... update itemId with new quantity ...
}
}
答案 1 :(得分:0)
您可以更改代码以在表单元素中生成表。像这样:
out.print("<form action='/YOUR_SERVLET_MAPPING'>");
for (Item it: itemList){
out.print("<tr>");
out.print("<td>"+it.getId()+"</td>");
out.print("<td>"+it.getName()+"</td>");
out.print("<td>"+it.getDesc()+"</td>");
out.print("<td>"+it.getPrice()+"</td>");
out.print("<td><input name=\"entries\" type=\"number\" min = \"0\" placeholder=\"0\" size=\"2\"></td>");//user input for quantity
out.print("</tr>");
out.print("<input value='Send Data' type='submit'>");
out.print("</form>");
}
何时发送数据&#34;单击,将向/ YOUR_SERVLET_MAPPING(您的servlet)发出请求。您可以使用getParameterValues(http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getParameterValues(java.lang.String) )获取值的方法。
String values[] = request.getParameterValues("entries");