如何在openlaszlo中使用LzBrowser.loadURL()在查询字符串中传递两个值。
我的示例代码:
LzBrowser.loadURL("../modules/Index.jsp?base="+ canvas.base +" id=" + canvas.Id,"fraMain");
我得到数字格式例外:
java.lang.NumberFormatException:对于输入字符串:“1 base = 1”]
请帮助解决这个问题。
谢谢,
拉吉
答案 0 :(得分:1)
你应该添加&两个查询参数之间。你应该写这样的
LzBrowser.loadURL("../modules/Index.jsp?base="+ canvas.base +"&id=" + canvas.Id,"fraMain");
答案 1 :(得分:1)
我们必须提供&放大器;而不是&amp ;.它对我有用。
答案 2 :(得分:1)
数字格式异常意味着,在代码中的某个时刻,浏览器会尝试将字符串解析为数字。您使用的是哪个版本的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”的引用必须以';'结尾 分隔符。寻找错位或未转义的&符号('&amp;')字符 在您的源代码中。
使用“&amp;”所描述的解决方法而不是“&amp;”并且没有CDATA部分当然是一个有效的选项 - 尽管它降低了我眼中JavaScript代码的可读性。
答案 3 :(得分:0)
实际上有两种方法可以做到这一点,以下两种方法都是正确的:
1)通过使用&lt;![CDATA [and]]&gt;包围内部代码来转义特殊HTML字符(在本例中为&amp;)。标记:
<method name="loadUrl">
<![CDATA[
lz.Browser.loadURL("http://www.google.com?base=" + canvas.base + "&iD=" + canvas.iD, "_blank");
]]>
</method>
2)HTML-entity编码&amp;字符到&amp; amp;
<method name="loadUrl">
lz.Browser.loadURL("http://www.google.com?base=" + canvas.base + "&iD=" + canvas.iD, "_blank");
</method>
您选择的方法取决于您自己的偏好。