6

我有一个像下面这样的动作

public class CompareAction {

    private Long[] pids;

    public Long[] getPids() {
        return pids;
    }

    public void setPids(Long[] pids) {
        this.pids = pids;
    }

    public String displayComparison() {
        for (Long pid : pids) {
            System.out.println("pid = " + pid);
            System.out.println();
        }
        return "success";
    }
}

我正在尝试通过在地址栏中键入以下 url 来发送数组http://localhost:8080/sm-shop/compare?pids=12,23,34。我想要的输出是

pid = 12

pid = 23

pid = 34

但我得到的是

pid = 122334

我试过谷歌搜索,但找不到如何做到这一点。请帮我找出问题所在。

4

2 回答 2

5

您需要pids多次传递参数:

http://localhost:8080/sm-shop/compare?pids=12&pids=23&pids=34

如果您将pids属性声明为数组,Struts2 会自动将多个参数映射到数组。

于 2013-10-15T16:24:36.337 回答
5

如果您想保留 this( http://localhost:8080/sm-shop/compare?pids=12,23,34) url 格式,您必须添加一个自定义转换器,或者您可以在您的操作中将 pids 设为字符串,并通过以逗号分隔数组来解析数组。

于 2013-10-17T05:48:08.117 回答