为什么我不能将zscript中的Java String值传递给ZK中的javascript?

时间:2017-09-20 06:22:07

标签: javascript java zk

这是我现在在zhtml文件中的内容:

<zscript>
  String sample="123456";
</zscript>
<script>
  function called(){
    var jsample=${sample};
    alert(jsample);
  }
</script>

如果sample是一个int或Boolean或一个只有数字的字符串,它工作正常。我调用该函数,弹出警告框,显示值,是一系列数字还是真/假。

但是如果样本包含一个字符,比如

String sample="q123456";

然后它停止工作。我调用该函数,但没有任何反应,它停在

var jsample=${sample};

我很好奇是什么造成的。虽然感觉像是基本的javascript。

非常感谢。

1 个答案:

答案 0 :(得分:2)

是的,它是基本的JavaScript。但是你必须想象在zul解析器解析${sample};之后代码是什么样的:

var jsample=123456;   // jsample is a number, value 123456
var jsample=false;    // jsample is a boolean, value false
var jsample=q123456;  // jsample is something, value whatever q123456 is

您可以看到 JavaScript认为q123456是一个无法找到的变量名称。它会告诉您是否打开控制台,例如Chrome说:&#34;未捕获的ReferenceError:asdasd未定义&#34;。

要解决此问题,请将zScript更改为

var jsample="${sample}";

sample包装成一个字符串,因此生成的JavaScript代码现在看起来像这样:

var jsample="123456";
var jsample="false";
var jsample="q123456";

如果您需要特定类型,JavaScript可能会自动转换jsample,或者您使用isNaN等检查手动转换。