我想像这样加载一个HTML组件<h:li />
的类:
<h:li class="@load(vm.className)" />
但我不能和我不能使用ZK组件。
欢迎任何建议,谢谢
修改
这是错误:
org.zkoss.zel.ELException: The identifier [class] is not a valid Java identifier as required by section 1.19 of the EL specification (Identifier ::= Java language identifier). This check can be disabled by setting the system property org.zkoss.zel.impl.parser.SKIP_IDENTIFIER_CHECK to true.
答案 0 :(得分:0)
那是因为“class”是一个Java关键字(即你不能将它用作名称)。所以zk使用“sclass”代替解决这个问题。
所以,试试这个:<h:li sclass="@load(vm.className)" />
为了帮助理解正在发生的事情:如果你在zul中写了类似<component property="something" />
的内容,那么zk会在某个时候调用component.setProperty(something)
。因此,在您的情况下,即使没有“class”作为Java关键字,也会抱怨setClass
上没有li
方法。
如果您将来设置属性时遇到问题,只需打开您要创建的组件的Java类,并检查它是否确实具有该属性的setter。
在Op:的反馈后编辑
@KiloBatata但还有另一种可能性:使用xhtml namspace而不是本地空间。我刚试过了:
<h:li xmlns:h="http://www.w3.org/1999/xhtml" sclass="@load(vm.className)" />
给了我
<li id="z_3" class="hello-world"></li>
使用xhtml命名空间而不是本机命名空间有帮助,因为本机命名空间不会为DOM元素创建任何窗口小部件或组件。