如何将元素中的动态值传递给servlet

时间:2016-01-24 01:32:49

标签: html forms jsp servlets

我在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>");

}
%>

生成下表
enter image description here

我想要做的是允许用户更新数量,然后将所有最终值传递给另一台服务器。

我想过打印&#34; td&#34;元素进入&#34;输入&#34;元素,但在这种情况下,我不能从原始servlet创建的arrayList中动态查看值。

我想知道是否有办法获取生成的值并将它们传递给下一个servlet。

所有的帮助都表示赞赏,提前谢谢。

2 个答案:

答案 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");