0

我正在使用mxGraph在网页中开发可绘制区域。

这是一个遗留代码,我正在尝试理解它,因为该区域除了网格之外没有显示任何图像。

这是我的javascript代码来显示一个简单的图表

//define a window to show the image and put a grid as background
container.style.background = 'url("js/src/images/grid.gif")';
//some other definitions here

var model = new mxGraphModel();
var graph = new mxGraph(container, model);

var id = _GET("id");
mxUtils.post("../Diagram", 
"action=get&id="+id, 
function(req)
{
    var node = req.getDocumentElement();
    var dec = new mxCodec(node.ownerDocument);
    dec.decode(node, graph.getModel());
}, 
function(error){
    console.log("Error in the design area");
    console.log(error);
});

../Diagram是一个 servlet Java,您可以在下面看到:

try {
    BufferedReader buffRead = new BufferedReader(new FileReader("/home/glassfish/mySite/Repository/"+getId()+"/"+getName()+".txt")); 
    String line = ""; 
    while (true) { 
        if (line != null) { 
            file = line; 
        } else {
            break; 
        }
        line = buffRead.readLine(); 
    } 
    buffRead.close();
} catch(Exception e) {
    System.out.println("File not found");
}
return file;

返回的 XML(文件)如下所示:

<root>
    <mxCell id="0"/>
    <mxCell id="1" parent="0"/>
    <mxCell id="2" parent="1" style="shape=ellipse;fillColor=#33CCFF" value="Objective" vertex="1">
        <mxGeometry as="geometry" height="40" width="100" x="262" y="90"/>
    </mxCell>
</root>

但是,屏幕中的结果总是只有网格

网格

当我调试该行dec.decode(node, graph.getModel());以查看node值时,我得到了一个 XML 对象,其中包含 Java 返回的信息。

在 Chrome 中,我在控制台中没有收到任何消息,但是当我在 Firefox 中测试它时,我收到一条警告,说我在文件 graph.properties 中有一个“XML 解析错误”,但这个文件不是 XML(实际上,我不知道这个文件是什么)。我也在这里粘贴文件

图.properties

alreadyConnected=Nodes already connected
containsValidationErrors=Contains validation errors
updatingDocument=Updating Document. Please wait...
updatingSelection=Updating Selection. Please wait...
collapse-expand=Collapse/Expand
doubleClickOrientation=Doubleclick to change orientation
close=Close
error=Error
done=Done
cancel=Cancel
ok=OK

更新

我仍然没有解决这个问题,但我得到了一个新的证据。

当我调试该dec.decode(node, graph.getModel());行时,我有两个dec变量属性。一个 XMLDocument 和一个空数组。我认为问题可能出在编码部分,但我在页面中没有找到任何关于 mxCodec的提示。

调试图像

4

1 回答 1

0

我终于找到了解决问题的方法。

错误出现在 Javascript 部分,但我不知道为什么控制台没有显示任何问题。无论如何,将原来的成功函数替换为下面的代码即可解决问题。

    function(req)
    {
        var doc = req.getDocumentElement();
        var codec = new mxCodec(doc);
        var elt = doc.firstChild;
        var cells = [];

        while (elt != null)
        {
          cells.push(codec.decode(elt));
          elt = elt.nextSibling;
        }

        graph.addCells(cells);
    }
于 2016-10-29T00:08:57.803 回答