如何在 openlaszlo 中使用 LzBrowser.loadURL() 在查询字符串中传递两个值。
我的示例代码:
LzBrowser.loadURL("../modules/Index.jsp?base="+ canvas.base +" id=" + canvas.Id,"fraMain");
我收到数字格式异常:
java.lang.NumberFormatException:对于输入字符串:“1 base=1”]
请帮助解决这个问题。
谢谢,
拉吉
如何在 openlaszlo 中使用 LzBrowser.loadURL() 在查询字符串中传递两个值。
我的示例代码:
LzBrowser.loadURL("../modules/Index.jsp?base="+ canvas.base +" id=" + canvas.Id,"fraMain");
我收到数字格式异常:
java.lang.NumberFormatException:对于输入字符串:“1 base=1”]
请帮助解决这个问题。
谢谢,
拉吉
您应该在两个查询参数之间添加 & 。你应该这样写
LzBrowser.loadURL("../modules/Index.jsp?base="+ canvas.base +"&id=" + canvas.Id,"fraMain");
我们必须提供& 代替 &。它对我有用。
数字格式异常意味着,在您的代码中的某个时刻,浏览器会尝试将字符串解析为数字。您使用的是哪个版本的 OpenLaszlo,以及哪个运行时?
基于 LzBrowser 的使用(从 OpenLaszlo 4.1 开始,您必须使用 lz.Browser),您似乎使用的是 OpenLaszlo 的 3.x 或 4.0 版本。
如果您想在包含 JavaScript 代码的方法中使用与符号“&”,则适用 XML 实体规则(以 & 开头的所有内容都将被视为 XML 实体)。在您的方法中添加部分将使您可以像在普通 JavaScript 或 ActionScript 代码中那样使用 &,例如
<canvas debug="true">
<button text="Open URL" onclick="canvas.loadUrl()" />
<attribute name="base" type="number" value="99" />
<attribute name="iD" type="number" value="10" />
<method name="loadUrl"><![CDATA[
lz.Browser.loadURL("http://www.google.com?base=" + canvas.base + "&iD=" + canvas.iD, "_blank");
]]></method>
</canvas>
如果没有 CDATA 部分,将引发以下编译器错误:
loadurl.lzx:10:71:对实体“iD”的引用必须以“;”结尾 分隔符。在源代码中查找错位或未转义的 & 字符。
所描述的使用“&”而不是“&”并且没有 CDATA 部分的解决方法当然是一个有效的选项 - 尽管它降低了我眼中的 JavaScript 代码的可读性。
实际上有两种方法可以做到这一点,以下都是正确的:
1) 通过用 <![CDATA[ 和 ]]> 标签包围内部代码来转义特殊的 HTML 字符(在本例中为 &):
<method name="loadUrl">
<![CDATA[
lz.Browser.loadURL("http://www.google.com?base=" + canvas.base + "&iD=" + canvas.iD, "_blank");
]]>
</method>
2) HTML-entity 将 & 字符编码为 &
<method name="loadUrl">
lz.Browser.loadURL("http://www.google.com?base=" + canvas.base + "&iD=" + canvas.iD, "_blank");
</method>
您选择哪种方法取决于您自己的喜好。