2016-01-24 75 views
0

我在JSP中从servlet获取输入并将输出传递给另一个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

什么我试图做的是允许用户更新数量,然后通过所有的最终值到另一台服务器。

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

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

所有帮助表示赞赏,在此先感谢。

+0

也许我还不够清楚,但正如我在问题中提到的,如果我的值显示在输入元素中,获取它们不会是一个问题。但它们动态显示在表单元素out.print(“​​”+ it.getId()+“”);'如果我将它们包装在输入标记中,则需要插入值属性不起作用 –

回答

0

要做到这一点的一种方法是让您的输入“名称”的形式为item_。你必须像值:

现在,当服务器提交你的servlet可以遍历请求参数的形式。假设一个名为“请求”的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 ... 
    } 
} 
+0

如果我没有把它们放在第一个地方的输入标签中,什么是ganna使表单捕获Item的值?如果是这样的话,我如何将数量与每件物品相关联? –

+0

表单将发送所有输入值。您将每个人与一个ID相关联。你需要检查值是否改变,然后更新你的数据库。基本思想是每个数量通过一个id与数据库中的项目相关联。 – Dave

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

当 “发送数据” 被点击时,请求将到/ 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"); 
+0

其实我有形式标签包装我的scriplet。问题是,我无法传递从数据库中生成的“Item”对象的值 –

相关问题