2013-10-15 1 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"; 
    } 
} 

Я пытаюсь отправить массив, введя следующий URL в адресной строки http://localhost:8080/sm-shop/compare?pids=12,23,34. Выход я хочу

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) url-формат, то вам нужно добавить пользовательский конвертер или вы можете сделать pids String в своем действии и проанализировать массив, разделив его запятыми.