如何在openlaszlo中的LzBrowser.loadURL中的查询字符串中提供两个值

时间:2012-05-02 13:07:12

标签: java openlaszlo

如何在openlaszlo中使用LzBrowser.loadURL()在查询字符串中传递两个值。

我的示例代码:

LzBrowser.loadURL("../modules/Index.jsp?base="+ canvas.base +" id=" + canvas.Id,"fraMain");

我得到数字格式例外:

java.lang.NumberFormatException:对于输入字符串:“1 base = 1”]

请帮助解决这个问题。

谢谢,

拉​​吉

4 个答案:

答案 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 + "&amp;iD=" + canvas.iD, "_blank");
</method>

您选择的方法取决于您自己的偏好。