Estoy tratando de mostrar el siguiente objeto JSON usando YUI DataTable. Pude mostrar el apellido, firstName, startDate, employeeCode, employeeStatus con éxito en YUI DataTable. Pero no pude mostrar los valores en el objeto interno. En el conjunto de columnas intenté user.userId y se muestra como {value} en DataTable.Mostrar el objeto JSON en YUI Datatable
[
{
"lastName": "MyLastName",
"firstName": "MyFirstName",
"startDate": "11-11-11",
"employeeCode": "124",
"employeeStatus": "Permanent",
"user": {
"key": {
"name": null,
"parent": {
"name": null,
"parent": null,
"id": 855,
"namespace": "",
"complete": true,
"kind": "Employee"
},
"id": 856,
"namespace": "",
"complete": true,
"kind": "Users"
},
"salt": null,
"userId": "[email protected]",
"status": true,
},
{
...
}
]
Este es el código Javascript:
<script type="text/javascript">
YUI().use("jsonp", 'sortable', 'json-parse', 'datatable', "datatable-sort", "io", "node", function(Y) {
var nestedCols = [
{key : "employeeCode",label : "Employee Code", sortable:true},
{key : "firstName", label : "First Name",sortable: true},
{key : "lastName", label : "Last Name", sortable:true},
{key : "user.userId", label : "Email Id"},
];
Y.io('/Employee/AjaxList', {
on : {
success : function(tx, r) {
var data = Y.JSON.parse(r.responseText);
var table = new Y.DataTable.Base({
columnset : nestedCols,
recordset : data,
}).plug(Y.Plugin.DataTableSort);
table.render("#empTable");
}
}
});
});
</script>
¿hay algo malo con este fragmento de código? ¿Cómo puedo mostrar el valor de user.userId en DataTable?
Nota: El JSON se genera utilizando Jackson y aplicación se desarrolla en GAE/J
UPDATE:
Solía DataSource siguiendo la sugerencia por @Luke. Esta vez obtuve una DataTable vacía con solo los encabezados. Aquí está el fragmento de código.
YUI().use("datasource-get", "datatable-base", "datatable-datasource","datasource-arrayschema", function (Y) {
var url = "/Employee/AjaxList?";
var dataSource, table;
dataSource = new Y.DataSource.Get({ source: url });
dataSource.plug(Y.Plugin.DataSourceArraySchema, {
schema: {
resultFields: ["firstName", "lastName"]
}
});
var cols = ["firstName", "lastName"];
table = new Y.DataTable.Base({
columnset: cols,
});
table.plug(Y.Plugin.DataTableDataSource, { datasource: dataSource });
table.render("#empTable");
table.datasource.load();
});
He intentado utilizar el origen de datos, pero ahora parece que YUI está enviando una solicitud incorrecta al servidor. Esta es la URL que obtuve de la consola firebug: http: // localhost: 8080/ExampleApp/Employee/AjaxListundefined & callback = YUI.Env.DataSource.callbacks.yui_3_4_0_1_1316763699238_127 La URL correcta es http: // localhost: 8080/ExampleApp/Employee/AjaxList – libregeek
Por favor, ignore el comentario anterior, resolví este problema agregando un '?' al final de la URL de origen. Pero aún así los datos no están incluidos en la tabla de datos. Puedo ver los datos JSON en la consola Firebug. – libregeek
He actualizado la pregunta con la secuencia de comandos utilizando datasource-arrayschema. Creo que la respuesta que recibo es una matriz y no pude identificar resultListLocator para datasource-jsonschema – libregeek