Actualmente estoy tratando de descubrir cómo trabajar con una matriz bidimensional en Java que genero en un JSP con JavaScript. El problema es que cuando lo asigno a una propiedad existente que está oculta en el formulario para ser enviado a través de la solicitud, genera una cadena completa con todos los valores, así:
function saveArray(){ var array= frames['myFrame'].array; //this comes from a child frame and its perfectly ok, works //fine on a 2 dimension array document.forms[0].arrayHiddenProperty.value = array; }¿Cómo puedo hacer que un campo en un formulario html sea una matriz (no creo que sea posible) o enviar la matriz completa a mi backend de Java? El proyecto usa Struts, por lo que esta es una clase de acción. Gracias chicos.
Formdata acepta solo tipos de cadena, por lo que cuando el tipo no es una cadena se convierte automáticamente en un tipo de cadena, sin embargo, puede agregar una clave en un formdata más de una vez para crear una estructura que se interpretará como una matriz en el servidor.
// client side --------------------------------------------- const formData = new FormData(); formData.append('key_name', 'value_1'); formData.append('key_name', 'value_2'); formData.append('key_name', 'value_3'); formData.append('key_name', 'value_4'); const request = new XMLHttpRequest(); request.open("POST", "request_url"); request.send(formData); // server side ---------------------------------------------- // into the request you find an array if you search into // POST['key_name'] because the key is repeated and all the // elements will be grouped into an arrayAdemás del método que usa el objeto nativo "formdata", es posible enviar estructuras complejas a través de una solicitud JSON de la siguiente manera.
const sampleArray = [ 'banana', 'orange', 'pear' ]; const sampleJson = { 'other_data_key': 'other_data_value', 'array_of_values': sampleArray } const sampleJsonStringified = JSON.stringify(sampleJson); const request = new XMLHttpRequest(); request.open("POST", "request_url"); request.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); request.send(sampleJsonStringified);