当我尝试在像这样的类中使用默认位置时,$once{property}会给出以下错误。
Exception in thread "main" org.openlaszlo.sc.parser.TokenMgrError: Lexical error at line 25, column 249. Encountered: "@" (64), after : ""
[exec] at org.openlaszlo.sc.parser.ParserTokenManager.getNextToken(ParserTokenManager.java:2565)
[exec] at org.openlaszlo.sc.parser.Parser.jj_scan_token(Parser.java:10271)
[exec] at org.openlaszlo.sc.parser.Parser.jj_3_5(Parser.java:8325)
[exec] at org.openlaszlo.sc.parser.Parser.jj_2_5(Parser.java:7224)
[exec] at org.openlaszlo.sc.parser.Parser.CallExpression(Parser.java:1312)
[exec] at org.openlaszlo.sc.parser.Parser.PostfixExpression(Parser.java:1521)我已经在这个url中放置了一个示例代码。该代码在OL 3.3中运行良好,但在4.9和5.0中不能正常工作。任何关于它为什么不工作的想法都会有帮助。
http://forum.openlaszlo.org/showthread.php?p=48740#post48740发布于 2012-08-16 22:28:53
您的代码中有两个问题。首先,defaultplacement属性的doublequote语法:
<attribute name="defaultplacement" value="'insideview'"/>这是一个旧语法,在最新版本的OpenLaszlo中不需要。另一个问题是$once{}约束的使用,它甚至不是必需的-它导致了编译器异常。
<attribute name="defaultplacement" value="$once{test.defaultplacement}"/> 但让我用一个简单的代码示例来澄清我的意思:
<canvas>
<class name="blackbox" extends="view">
<attribute name="bgcolor" value="black"/>
<attribute name="defaultplacement" value="blackinner"/>
<view name="blackinner" bgcolor="green"
x="10" y="10" width="${parent.width-20}" height="${parent.height-20}">
</view>
</class>
<class name="redbox" extends="view">
<attribute name="bgcolor" value="red"/>
<attribute name="defaultplacement" value="content"/>
<blackbox name="content"
x="10" y="10" width="${parent.width-20}" height="${parent.height-20}">
</blackbox>
</class>
<redbox x="10" y="10" width="200" height="200">
<view width="40" height="40" bgcolor="blue" />
</redbox>
</canvas>此示例应用程序定义了一个类blackbox和一个类redbox。黑盒只是一个带有绿色子视图的黑盒,它有一个10像素的插图。
redbox使用黑盒类/标记作为子类,嵌入的像素为20像素。redbox的默认位置指的是黑盒实例,黑盒的默认位置指的是名为blackinner的黑盒的绿色子视图。
然后,代码创建一个redbox实例,内容为蓝色视图(40x40像素)。正如您在应用程序的此屏幕截图中所看到的,蓝色视图会自动正确地放置在黑盒的greenview中。

您的应用程序的原始代码(为了简化,我已经将所有类都放在画布文件中)在5.0 (主干)中编译时没有任何问题,当进行了讨论的更改时:
<canvas>
<class name="myframe" extends="view">
<attribute name="bgcolor" value="red"/>
<attribute name="defaultplacement" value="insideview"/>
<view x="5" y="5" width="${parent.width-10}" name='insideview'
height="${parent.height-10}"
bgcolor="#FFFFCC"/>
</class>
<class name="answerMain" extends="view">
<attribute name="defaultplacement" value="test"/>
<myframe name="test" width="220" height="20" />
</class>
<answerMain>
<text> HI </text>
</answerMain>
</canvas>在这种情况下,OpenLaszlo编译器绝对不应该带着异常退出,但不幸的是,在过去的两年中,编译器没有得到很好的维护。
https://stackoverflow.com/questions/11988066
复制相似问题