我正在将XML字符串从grails Controller 传递到gsp,并且需要在javascript函数中使用它来使用jstree显示treeview。
我的 Controller 代码是
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);
}
}
Controller :
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}启用函数后,它将破坏代码。我尝试不加引号,仍然是同样的问题。
我做错了什么?
提前致谢。
最佳答案
如果您有xml字符串,则应该可以从 Controller 访问它,如下所示:
Controller :
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 ])
}
GSP:
<!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>
关于javascript - Grails Controller 的值打破了gsp中的javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18544926/