将 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 元素创建任何小部件或组件。
我想像这样为 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 元素创建任何小部件或组件。