为什么我不能将 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
.
等检查手动完成
这是我现在在 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
.