为什么我不能将 Java 字符串值从 zscript 传递到 ZK 中的 javascript?

Why can't I pass a Java String value from zscript to javascript in ZK?

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

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

如果样本是一个整数或布尔值或一个只有数字的字符串,它可以工作fine.I调用函数,弹出警告框显示值,无论是一系列数字还是true/false .

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

String sample="q123456";

然后它停止working.I调用函数,但没有任何反应,它停止在

var jsample=${sample};

我很好奇是什么导致 that.It 感觉像基本的 javascript。

非常感谢。

是的,这是基本的 JavaScript。但是你得想象一下${sample};被zul解析器解析后的代码是什么样子的:

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 说:"Uncaught ReferenceError: asdasd is not defined".

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

var jsample="${sample}";

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

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

如果您需要特定类型,JavaScript 可能会自动转换 jsample,或者您可以通过 isNaN.

等检查手动完成