2010-08-18 11 views
9

Tengo un problema al enviar los parámetros de matriz a una clase de acción Struts 2. Estoy usando struts 2.1.8.1.Parámetros de matriz HTTP con Struts 2 a través de una llamada Ajax

Aquí es un código de ejemplo:

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; 
    } 
} 

El problema es cuando el envío de una matriz a través del método jquery ajax:

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

provoca una excepción que se produzca:

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

¿Cómo puedo usar jQuery para enviar la matriz a mi Struts2 ac? clase de la clase? ¿Hay algo en la línea de un interceptor que deba incluir? ¿O hay una opción en jQuery para eliminar esto?

También encontré este problema con el control jQuery UI Sortable, pero lo resolví usando una expresión regular para eliminar los caracteres "[]". Me gustaría evitar eso, porque esa solución me molesta. Supongo que podría construir la cadena yo mismo, en lugar de usar la notación del objeto, pero a menos que me convenzas de lo contrario, me gustaría utilizar la notación del objeto en su lugar.

Respuesta

13

IIRC puntales no le gusta el formato de jQuery 1.4 o superior, puede utilizar el formato tradicional, sin embargo, sólo hay que poner esto en cualquier momento antes de su llamada $.ajax():

$.ajaxSettings.traditional = true; 

Usted puede leer más sobre el defecto 1.4+ vs serialización tradicional en el $.param() documentation, la mejor ilustración es su pequeño ejemplo:

// <=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

Eso funciona perfecto, gracias. – partkyle

+1

Ok ... ¿Cómo puedo estar al día con estos cambios pequeños pero críticos? Gracias por su respuesta por cierto – rsilva4

+0

Respondiendo a mi propio comentario: http://api.jquery.com/category/version/1.4/ – rsilva4

Cuestiones relacionadas