首页 > 解决方案 > 获取参数时如何在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;

标签: javaservletsjakarta-ee

解决方案


(编辑:使用对象类。)

任何一个

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 调用。


推荐阅读