【问题标题】:How to pass dynamic values in a <td> element to a servlet如何将 <td> 元素中的动态值传递给 servlet
【发布时间】:2016-01-24 01:32:48
【问题描述】:

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

}
%>

生成下表

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

我曾想过将“td”元素中的值打印到“input”元素中,但在这种情况下,我将无法从原始 servlet 创建的 arrayList 中动态查看值。

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

感谢所有帮助,提前致谢。

【问题讨论】:

  • 也许我不够清楚,但正如我在问题中提到的,如果我的值显示在输入元素中,那么获取它们不会有问题。但它们动态显示在表格单元格元素out.print("&lt;td&gt;"+it.getId()+"&lt;/td&gt;"); 中,如果我将它们包装在输入标签中,我需要手动插入值属性,这不符合我想要实现的目的跨度>

标签: html forms jsp servlets


【解决方案1】:

一种方法是让您输入的“名称”采用 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 ...
   }
}

【讨论】:

  • 如果我一开始没有将 Item 的值放在输入标签中,那么如何让表单捕获 Item 的值?如果是这样,我如何将数量与每个项目相关联?
  • 表单将发送所有输入值。您将每个人与一个 ID 相关联。您需要检查值是否更改,然后更新您的数据库。基本思想是每个数量 通过 id 与数据库中的项目相关联。
【解决方案2】:

您可以更改代码以在表单元素内生成表格。像这样:

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>");
}

单击“发送数据”时,将向 /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");

【讨论】:

  • 实际上我有包装我的脚本的表单标签。问题是,我无法传递从数据库生成的“项目”对象的值
猜你喜欢
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多