将 ViewModel 变量获取到 Html 组件

get ViewModel variable to Html Component

我想像这样为 HTML 组件 <h:li /> 加载设置 class :

<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.

那是因为 "class" 是一个 Java 关键字(即您不能将其用作名称)。所以 zk 使用 "sclass" 来解决这个问题。

所以,试试这个:<h:li sclass="@load(vm.className)" />

为了帮助理解发生了什么:如果你在 zul 中写类似 <component property="something" /> 的东西,zk 会在某个时候调用 component.setProperty(something)。因此,在您的情况下,即使 "class" 不是 Java 关键字,它也会抱怨 li.

上没有 setClass 方法

如果您以后在设置 属性 时遇到问题,只需打开您要创建的组件的 Java class 并检查它是否真的有 setter 为 属性.


根据 Op 的反馈编辑

@KiloBatata There is another possibility, though: Use the xhtml namspace instead of the native one. I have just tried it :

<h:li xmlns:h="http://www.w3.org/1999/xhtml" sclass="@load(vm.className)" />

gives me

<li id="z_3" class="hello-world"></li>

使用 xhtml 命名空间而不是原生命名空间有所帮助,因为原生命名空间不会为 DOM 元素创建任何小部件或组件。