S. Moreno
S. Moreno

Reputation: 536

How to pass Json Code in Java to Javascript

Im trying to pass a Collection of items converted into String with JsonArray to my Javascript but dont work.

This is the code of the class

    InformeAmenazasAGR = manager.preparaInformeRiesgoActivos(idDimension, tipoActivo, idActivo, tipoActivoTexto, nombreActivo, recursos);       

    JSONArray JSonArray = new JSONArray();      
    JSonArray.put(InformeAmenazasAGR);
    String texto = JSonArray.toString();
    //Delete the first and last char.
    texto = texto.substring(1, texto.length()-1);   

    request.setAttribute("InformeAmenazasAGR", texto);
    return mapping.findForward( "informeActivosAGR" );

This returns one String like this:

[
["16","E.1","Errores de los usuarios","7","1128750","1015875"],
["20","E.5","Deficiencias en la organización","7","752500","526750"],
]

My JSP with Javascript (im using ExtJS and follow I tried Passing a Java string to Javascript post but dont work)

var DatosAmenazas = new String("<%request.getAttribute("InformeAmenazasAGR");%>");
var amenazaStore = Ext.create('Ext.data.Store', {
    model: 'Amenazas',
    data: DatosAmenazas     
});

What am i doing wrong? Thank you in advance

EDIT: If i put the raw String that i save in request.setAttribute("InformeAmenazasAGR", texto); it works:

var amenazaStore = Ext.create('Ext.data.Store', {
    model: 'Amenazas',
    data: [
           ["16","E.1","Errores de los usuarios","7","1128750","1015875"],
           ["20","E.5","Deficiencias en la organización","7","752500","526750"],
          ]
    });

Upvotes: 0

Views: 334

Answers (1)

VPK
VPK

Reputation: 3090

I think using the Java scriptlet inside javascript is not good practice,

instead you can use the $(InformeAmenazasAGR) to set the request attribute value to a hidden element and put the hidden element anywhere inside your html <body> like this,

<input type="hidden" id="jsonData" value="${InformeAmenazasAGR}"> 

then, get the hidden element value like,

var DatosAmenazas = new String($('#jsonData').val());

if you need the request attribute InformeAmenazasAGR to be converted into json data then instead of above you can change your above line as,

var DatosAmenazas = JSON.parse($('#jsonData').val());

FYI: Java scriptlets run on server side while javascript on client side

Upvotes: 1

Related Questions