2013-10-15 12 views
5

Ho un'azione come di seguitoArray come ottenere parametro 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"; 
    } 
} 

Sto cercando di inviare una matrice digitando seguente URL nella AddressBar http://localhost:8080/sm-shop/compare?pids=12,23,34. L'output che voglio è

pid = 12 

pid = 23 

pid = 34 

Ma quello che sto ricevendo è

pid = 122334 

ho provato googling ma non ho trovato come fare questo. Per favore aiutami a capire che cosa non va.

+0

Prova 'http: // localhost: 8080/sm-shop/compare? Pids [] = 12 & pids [] = 23 & pids [] = 34' come URL? –

+0

Oppure aggiungi un convertitore personalizzato ... –

+0

come aggiungere un convertitore personalizzato? – Thomas

risposta

4

è necessario passare il parametro pids più volte:

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

Se hai dichiarato la vostra proprietà pids come matrice Struts2 mapperà automaticamente più parametri array.

+0

Columbus's Egg FTW –

5

Se si desidera mantenere questo formato di URL (http://localhost:8080/sm-shop/compare?pids=12,23,34), è necessario aggiungere un convertitore personalizzato oppure è possibile creare una stringa di Pids nella propria azione e analizzare l'array suddividendolo in virgole.

Problemi correlati