0

我正在将 XML 字符串从 grails 控制器传递给 gsp,并且需要在 javascript 函数中使用它来使用 jstree 显示树视图。

我的控制器代码是

    render(view: "list",model: [dataXML: callXML.getXmlString()])

gsp代码中的javascript函数是

    function callXML(){
            var xmlStr = "${dataXML}";
            _uimTree = new UIMTreeProcessor(parseXml(), jQuery("#jstree"));
            _uimTree.doProcess();
    }

    function parseXML(){
            if (window.DOMParser) {
                return new window.DOMParser().parseFromString(xmlStr, "text/xml");
            }else if (typeof window.ActiveXObject != "undefined" && new window.ActiveXObject("Microsoft.XMLDOM")) {
                var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.async = "false";
                xmlDoc.loadXML(xmlStr);
                return xmlDoc;
            }else{
                return jQuery(xmlStr);
            }
    }

控制器:

def showModel = { 
    CallXML callXML = new CallXML(); 
    callXML.setXmlString(); 
    def productFlowModels = new XmlParser().parseText(callXML.getXmlString()); 
    println callXML.getXmlString(); 
    render(view: "list",model: [dataXML: callXML.getXmlString() as String]) 
}

只要 ${dataXML} 进入函数,它就会破坏代码。我试过不带引号,仍然是同样的问题。我做错了什么?

提前致谢。

4

2 回答 2

1

如果你有 xml 字符串,你应该可以像这样从你的控制器访问它:

控制器:

def list(Integer max) {
        def xmlString = """<langs type="current">
                             <language>Java</language>
                             <language>Groovy</language>
                             <language>JavaScript</language>
                           </langs>"""

        def xml = new XmlParser().parseText( xmlString )
        render (view:'list',model: [dataXML:xml ])
    }

普惠制:

<!DOCTYPE html>
<html>
    <head>
        <script>
        function my(){
            var str = "${dataXML.encodeAsHTML()}"
            alert (str)
        }
        </script>
    </head>
    <body>

    <p>
        ${dataXML.encodeAsHTML()}
    </p>
           <script>
               my()
           </script>
    </body>
</html>
于 2013-08-31T07:04:35.903 回答
0

在您的模型中,使用

render(view: "list",model: [dataXML: JsonOutput.toJson(callXML.getXmlString())])

如果要在 javascript 上下文中输出字符串,则需要将字符串正确编码为 javascript 字符串。

于 2013-08-31T06:07:54.783 回答