Hola a todos!
Quiero pasar crear un grid con Struts 2 a partir de los datos obtenidos en la clase Action. El problema que tengo es que en vez de mostrarse el grid en pantalla, saca el contenido del objeto JSON; exactamente: {"liszonas":[{"idZona":4,"nombre":"Almacén 1"},{"idZona":5,"nombre":"Almacén 2"},{"idZona":3,"nombre":"Almacén de cartonaje"}]}
Os pongo el código, a ver si me podéis dar algún consejo:
Método execute del Action
Código Java:
Ver original // La variable 'lista' tiene el valor
//
try {
// Guardar los datos en el objeto JSON
JSONObject json = new JSONObject();
json.put("liszonas", lista);
System.
out.
println(json.
toString()); return (SUCCESS);
}
return(ERROR);
}
}
También dentro del Action existe:
Código Java:
Ver originalpublic Object getLista
(){return this.
lista;} public void setLista
(Object j
){this.
lista = j
;}
return inputStream;
}
Código del struts.xml:
Código XML:
Ver original<action name="FiltroUbicaciones"
class="laquesea"
method="execute">
<result name="success" type="stream">
<param name="contentType">text/plain</param>
<param name="inputName">inputStream</param>
</result>
<result name="error">/error.jsp</result>
</action>
El jsp solo tiene los includes y:
Y para finalizar el archivo js, incluido en el jsp y encargado de crear el grid:
Código js:
Ver originalExt.onReady(function(){
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';
var jsonReader = new Ext.data.JsonReader( {
root : 'liszonas',
totalProperty : 'totalCount' → No lo tengo definido en ningún sitio!
}, [ {
name: 'idZona'
}, {
name: 'nombre'
}]);
var ds = new Ext.data.Store({
root : 'liszonas',
totalProperty:'totalCount',
proxy: new Ext.data.HttpProxy({
url:'FiltroUbicaciones.action'
}),
reader: jsonReader
});
var grid = new Ext.grid.GridPanel({
el:'grid',
ds:ds,
width:595,
height:150,
title:'Professors',
store: ds,
trackMouseOver:false,
disableSelection:true,
loadMask: true,
columns:[{
header: "ID ZONA",
dataIndex: 'idZona',
width: 80,
sortable: true
},{
header: "Nombre",
dataIndex: 'nombre',
width: 420,
sortable: true
}],
});
grid.render('grid-example');
});
});
No sé qué estoy haciendo mal!!! Algún consejo?
Muchas gracias!