2013-10-15 20 views
5

Ich habe eine Aktion wie unterArray als Parameter erhält in 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"; 
    } 
} 

Ich versuche http://localhost:8080/sm-shop/compare?pids=12,23,34 ein Array, indem Sie folgende URL in der Adressleiste zu senden. Der Ausgang ich will, ist

pid = 12 

pid = 23 

pid = 34 

Aber was ich ist immer

pid = 122334 

Ich versuchte googeln aber nicht finden kann, wie dies zu tun. Bitte hilf mir herauszufinden, was falsch ist.

+0

Versuchen Sie 'http: // localhost: 8080/sm-shop/vergleichen? Pids [] = 12 & pids [] = 23 & pids [] = 34 'als URL? –

+0

Oder fügen Sie einen benutzerdefinierten Konverter ... –

+0

, wie benutzerdefinierte Konverter hinzufügen? – Thomas

Antwort

4

Sie müssen Parameter pids mehrere Male passieren:

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

Wenn Sie Ihre pids Eigenschaft als Array Struts2 deklariert werden automatisch mehrere Parameter Array abzubilden.

+0

Kolumbus Ei FTW –

5

Wenn Sie dieses (http://localhost:8080/sm-shop/compare?pids=12,23,34) URL-Format beibehalten möchten, müssen Sie entweder einen benutzerdefinierten Konverter hinzufügen oder Sie können pids einen String in Ihrer Aktion erstellen und das Array analysieren, indem Sie ihn durch Kommas trennen.