1

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

我的示例代码:

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

我收到数字格式异常:

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

请帮助解决这个问题。

谢谢,

拉吉

4

4 回答 4

1

您应该在两个查询参数之间添加 & 。你应该这样写

LzBrowser.loadURL("../modules/Index.jsp?base="+ canvas.base +"&id=" + canvas.Id,"fraMain");
于 2012-05-02T13:38:37.240 回答
1

我们必须提供& 代替 &。它对我有用。

于 2012-05-03T06:34:35.280 回答
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”的引用必须以“;”结尾 分隔符。在源代码中查找错位或未转义的 & 字符。

所描述的使用“&”而不是“&”并且没有 CDATA 部分的解决方法当然是一个有效的选项 - 尽管它降低了我眼中的 JavaScript 代码的可读性。

于 2012-08-04T08:50:19.473 回答
0

实际上有两种方法可以做到这一点,以下都是正确的:

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

您选择哪种方法取决于您自己的喜好。

于 2012-08-14T19:34:09.830 回答