Массив как параметр получения в 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

Я пробовал гуглить, но не нашел, как это сделать. Пожалуйста, помогите мне понять, что не так.


person Thomas    schedule 15.10.2013    source источник
comment
Попробовать http://localhost:8080/sm-shop/compare?pids[]=12&pids[]=23&pids[]=34 в качестве URL?   -  person Anthony Grist    schedule 15.10.2013
comment
Или добавьте пользовательский конвертер...   -  person Boris the Spider    schedule 15.10.2013
comment
как добавить пользовательский конвертер?   -  person Thomas    schedule 15.10.2013


Ответы (2)


Вам нужно передать параметр pids несколько раз:

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

Если вы объявили свое свойство pids массивом, Struts2 автоматически сопоставит несколько параметров с массивом.

person Aleksandr M    schedule 15.10.2013

Если вы хотите сохранить этот (http://localhost:8080/sm-shop/compare?pids=12,23,34) формат URL-адреса, вам нужно либо добавить собственный конвертер, либо вы можете сделать pids строкой в ​​своем действии и проанализировать массив, разделив его запятыми.

person debD    schedule 17.10.2013