Как передать объект JSON в файл JavaScript GOJS из Java / Prime Faces

У меня есть класс java, который возвращает объект JSON, и мне нужно передать этот объект JSON в javascript gojs, вот образец моего файла javascript gojs (gojs_org_view.js)

function init() {
    var g = go.GraphObject.make;  // for conciseness in defining templates
    myDiagram = new go.Diagram("myDiagram"); // must be the ID or reference to div
    var graygrad = g(go.Brush, go.Brush.Linear, { 0: "rgb(125, 125, 125)", 1: "rgb(86, 86, 86)", 1: "rgb(86, 86, 86)" });
    var unassocArray =[{"id":"12" , "name":"Bugs Bunny", "title":"Head Bunny"}, 
{"id":"13" , "name":"Honey Bunny", "title":"Wife Bunny"}, 
{"id":"14" , "name":"Lola Bunny", "title":"Lil' Bunny"}, 
{"id":"15" , "name":"Mickey Mouse", "title":"Looney In Charge"}];

// какой-то код javascript ...........

function save() {
    var json = JSON.parse(myDiagram.model.toJson());
  document.getElementById("mySavedModel").value = JSON.stringify(json.nodeDataArray, null, '  ');
  }
  function load() {
    var nodeDataArray = 
[ {"id":"1", "pid":"1", "name":"Corrado 'Junior' Soprano", "title":"The Boss", "email":"[email protected]"},
    {"id":"2", "pid":"1", "name":"Tony Soprano", "title":"Underboss", "email":"[email protected]"},
    {"id":"3", "pid":"1", "name":"Herman 'Hesh' Rabkin", "title":"Advisor", "email":"[email protected]"},
    {"id":"4", "pid":"2", "name":"Paulie Walnuts", "title":"Capo", "email":"[email protected]"},
    {"id":"5", "pid":"2", "name":"Ralph Cifaretto", "title":"Capo MIA", "email":"[email protected]"},
    {"id":"6", "pid":"2", "name":"Silvio Dante", "title":"Consigliere", "email":"[email protected]"}];
    var model = new go.TreeModel();
    model.nodeKeyProperty = "id";
    model.nodeParentKeyProperty = "pid";
    model.nodeDataArray = nodeDataArray;
    myDiagram.model = model;
    myDiagram.undoManager.isEnabled = true;
  }
    function onSelectionChanged(e) {
    var node = e.diagram.selection.first();
    if (node instanceof go.Node) {
      updateProperties(node.data);
    } else {
      updateProperties(null);
    }
  }

  // Update the HTML elements for editing the properties of the currently selected node, if any
  function updateProperties(data) {
    if (data === null) {
      jQuery("#selected").css('visibility', 'hidden');
      jQuery("#name").html("");
      jQuery("#title").html("");
      jQuery("#email").html("");
      jQuery("#site").html("");
      jQuery("#superior").html("");

    } else {

      jQuery("#selected").css('display', 'block');
      jQuery("#name").html("ID: " + data.id  + " Name: " + data.fullname || "");
      jQuery("#title").html("Title: " + data.title || "");
      jQuery("#email").html("Email: " + data.email || "");
      jQuery("#site").html("Site: " + data.siteName || "");
      jQuery("#superior").html("Superior: " + data.pname || "");
    }
  }

Переменные javascript unassocArray и nodeDataArray жестко запрограммированы, вместо этого эти значения должны поступать из класса java или xhtml (я не уверен, какой метод является лучшим способом для отправки объекта JSON в файл javascript gojs, поскольку я новичок в простых лицах и JSON). Вот xhtml-код, вызывающий gojs

<p:panel id="relationshipsPanel">
                <h:outputScript library="js" name="go.js" />
                <h:outputScript library="js" name="gojs_org_view.js" />
                <h:outputStylesheet library="css" name="gojs_org_view.css"/>
                <div id="sample">
                    <div id="myPalette" class="myPaletteClass"></div>
                    <div id="myDiagram" class="myDiagramClass"></div>
                    <div id="myOverview" class="inner"></div>
                    <div id="selected" class="selectedClass"></div>
                </div> 
            </p:panel>

Я попробовал скрытое значение, как показано ниже, я добавил следующую строку в моем представлении

В gojs_org_view.js я сделал
window.console.log ("RANA ORG JSON --------------------->" + document.getElementById ("RelationsForm: arrVal "). значение); var nodeDataArray = JSON.parse (document.getElementById ("RelationsForm: arrVal"). value);

В консоли я получаю следующий объект JSON из представления в javascript, но его ошибка выдачи «Uncaught SyntaxError: Unexpected token i» в var nodeDataArray = JSON.parse (document.getElementById («RelationsForm: arrVal»). Value);


person RanPaul    schedule 09.08.2013    source источник


Ответы (1)


Вы можете запросить данные с сервера с помощью вызова AJAX и получить данные. если это не вариант, вы можете поместить данные в скрытое поле на странице, а затем получить к ним доступ в своей функции load(), как вы делаете это в своей функции save(), используя document.getElementById.

person Kishore    schedule 12.08.2013
comment
попробуйте проверить свой json с помощью jsonlint.com, похоже, у вас есть ошибки в вашем json - person Kishore; 13.08.2013