2013-10-15 35 views
5

得到的参数我有一个像下面阵列中的Struts 2

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

我试图通过在地址栏键入http://localhost:8080/sm-shop/compare?pids=12,23,34以下URL发送阵列的操作。我想输出是

pid = 12 

pid = 23 

pid = 34 

但是我得到的是

pid = 122334 

我试着用搜索引擎,但无法找到如何做到这一点。请帮我弄清楚什么是错的。

+0

尝试'http:// localhost:8080/sm-shop/compare?pids [] = 12&pids [] = 23&pids [] = 34'作为URL? –

+0

或者添加自定义转换器... –

+0

如何添加自定义转换器? – Thomas

回答

4

你需要传递参数pids多次:

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

如果你申报财产pids如Struts2的阵列将自动映射多个参数数组。

+0

哥伦布的蛋FTW –

5

如果你想保持这种格式(http://localhost:8080/sm-shop/compare?pids=12,23,34),你必须添加一个自定义转换器,或者你可以在你的动作中使用pids作为字符串,并通过以逗号分割来解析数组。