java - 获取参数时如何在servlet中将String转换为ArrayList
问题描述
我正在检索用户购买的产品列表,但由于构造函数中的产品属于 List 类型,因此出现错误。我不知道如何转换它
String buyer = request.getParameter("buyer");
List prodlist = request.getParameter("product");
Bill bill = new Bill(buyer, prodlist);
这是构造函数的代码
public Bill(String buyer, List<Product> product) {
super();
this.buyer = buyer;
this.product= product;
}
Product 类的属性
private int id;
private String name;
private float price;
解决方案
(编辑:使用对象类。)
任何一个
String[] products = request.getParameterValues("product");
List<Product> prodlist = new ArrayList<>();
for (String productName : products) {
Product product = loadProduct(productName); // Or such
prodlist.add(product);
}
或使用
List<String> prodlist = Arrays.asList(request.getParameterValues("product"));
也就是说getParameterValues
,对于同一参数的多个值"product"
是可能的。这通常是一个String[]
. 该getParameter(String)
方法适用于仅出现一次的参数;其实是个特例。
对于 URL 也会有同样的结果"http: ... my.html?product=pc&product=phone&product=tablet"
。
您应该检查 HTML 是否确实包含几个<input name="product">
,可能使用浏览器开发人员工具,通常由浏览器内的 F12 调用。
推荐阅读
- ios - 工作区警告:目标 Pod 无法链接框架 Foundation.framework
- android - 织物库中的格式错误的异常
- database - 在 .net-core 中处理数据库连接
- git - Gitlab Shell 错误从 10.5 更新到 10.6
- mysql - 字段列表中的列“lang_id”不明确
- python - 如何在用逗号分割后仅从python数据框中提取具有值的条目
- java - 错误:插件 zip 中缺少“elasticsearch”目录
- c# - 在满足条件时通过添加项目来创建列表
- groovy - Groovy - SoapUI - 如何将文件下载到特定路径
- performance - 为什么我无法在 Zabbix 中监控特定的 Windows 进程?