2010-08-18 9 views
9

Ho riscontrato un problema durante l'invio di parametri di array a una classe di azioni Struts 2. Sto usando i montanti 2.1.8.1.Parametri di matrice HTTP con Struts 2 tramite una chiamata Ajax

Ecco alcuni esempi di codice:

public class MyAction extends ActionSupport { 

    private String[] types; 

    public String execute() { 
     return SUCCESS; 
    } 

    public String[] getTypes() { 
     return types; 
    } 

    public void setTypes(String[] types) { 
     this.types = types; 
    } 
} 

Il problema è quando si invia una matrice tramite il metodo jquery ajax:

$.ajax({ 
    type: 'POST', 
    url: 'Myaction.action', 
    data: { 
     types: ["this", "is", "a", "test"] 
    } 
}); 

causa un'eccezione verificarsi:

ognl.ParseException: Encountered " "]" "] "" at line 1, column 7.

Come posso usare jQuery per inviare l'array al mio Struts2 ac classe di lezione? C'è qualcosa sulla falsariga di un intercettore che devo includere? O c'è un'opzione in jQuery per rimuovere questo?

Ho anche riscontrato questo problema con il controllo Sable dell'interfaccia utente jQuery, ma ho risolto il problema utilizzando una regex per rimuovere i caratteri "[]". Vorrei evitarlo, perché quella soluzione mi infastidisce. Suppongo che potrei semplicemente costruire la stringa da sola, invece di usare la notazione dell'oggetto, ma a meno che tu non riesca a convincermi del contrario, vorrei invece usare la notazione dell'oggetto.

risposta

13

IIRC Struts non piace il formato jQuery 1.4 +, è possibile utilizzare il formato tradizionale, però, basta mettere questo in qualsiasi momento prima della $.ajax() chiamata:

$.ajaxSettings.traditional = true; 

Si può leggere di più sul valore predefinito 1.4+ vs serializzazione tradizionale nel $.param() documentation, la migliore illustrazione è il loro breve esempio:

// <=1.3.2: (traditional in 1.4+) 
$.param({ a: [2,3,4] }) // "a=2&a=3&a=4" 
// >=1.4: (default in 1.4+) 
$.param({ a: [2,3,4] }) // "a[]=2&a[]=3&a[]=4" 
+0

Che funziona perfettamente, grazie. – partkyle

+1

Ok ... Come posso essere aggiornato su questi piccoli ma importanti cambiamenti? Grazie dalla tua risposta dal modo in cui – rsilva4

+0

Rispondendo al mio commento: http://api.jquery.com/category/version/1.4/ – rsilva4

Problemi correlati