我有一个要求,例如当用户选择多行表示计算机部件时 并点击提交我已经在servlet中获得所有选定的部分,然后我需要创建部件对象并设置属性
<html>
<body>
<form action="/OneServlet">
<c:foreach item="part" value="${computer.spareParts}">
<tr>
<td><input type="checkbox" name="${part.no}"></td>
<td>${part.no}</td>
<td>${part.name}</td>
<td>${part.cost}</td>
<td>${part.discription}</td>
</tr>
</c:foreach>
<input type="submit" value="Submit">
</form>
</body>
</html>
一个解决方案是使用javascript创建字符串并传递给Servlet,然后在servlet中拆分字符串。
我没有使用任何框架和jquery。
请建议最佳方式。
答案 0 :(得分:0)
为所有复选框指定相同的名称,并在servlet中使用request.getParameterValues(checkbox_name),它返回所有选定的值。
API供您参考 http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html
答案 1 :(得分:0)
为循环中的所有复选框仅指定一个名称,即partNumbers。这将是String数组中所有选中的复选框。
<html>
<body>
<form action="/OneServlet" method="POST">
<c:foreach item="part" value="${computer.spareParts}">
<tr>
<td><input type="checkbox" name="partNumbers"></td>
<td>${part.no}</td>
<td>${part.name}</td>
<td>${part.cost}</td>
<td>${part.discription}</td>
</tr>
</c:foreach>
<input type="submit" value="Submit">
</form>
</body>
</html>
将您的spareParts集合存储为:
request.getSession().setAttribute("list", spareParts);
因此,当您提交此表单时,您可以通过request.getParameterValues()方法检索oneservlet中的所选备件,该方法返回包含给定请求参数中所有值的String对象数组:
public class OneServlet extends HttpServlet{
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException{
String[] partNumbersSelected = request.getParameterValues("partNumbers");
HttpSession session = request.getSession();
List spareParts = session.getAttribute("list");
/*This is pseudo code
for(spareParts loop){
for(partNumbersSelected){
if(partNumberSelected matches spareParts){
retrieve part name, cost, description from spareParts
}
}
} */
}
}
在此基本上,您将捕获所选的部件号并从备件集合中检索其余的详细信息。
答案 2 :(得分:0)
我认为最好的解决方案之一是将其存储在会话中
在您的jsp页面中,您可以这样尝试..
ArrayList lst = new ArrayList();
lst.add("test1");
lst.add("test2");
session.setAttribute("list", lst);
在您的servlet中......
HttpSession session = request.getSession();
Arraylist lst = (ArrayList) session.getAttribute("lst");
答案 3 :(得分:0)
你可以试试这个:
<强> HTML 强>
<html>
<body>
<form action="/OneServlet">
<c:foreach item="part" value="${computer.spareParts}">
<tr>
<td><input type="checkbox" name="partNo" value="${part.no}"/></td>
<td>${part.no}</td>
<td>${part.name}</td>
<td>${part.cost}</td>
<td>${part.discription}</td>
</tr>
</c:foreach>
<input type="submit" value="Submit">
</form>
</body>
</html>
<强>的servlet 强>
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException{
String[] partNos = request.getParameterValues("partNo");
// your logic
}