Zk 框架 6.5.3 使用 E.L 与作曲家绑定

Zk framework 6.5.3 binding with composer using E.L

我正在使用此代码。效果很好。

<window id="win" xmlns:w="http://www.zkoss.org/2005/zk/client" apply='MyComposer'>
<textbox value="@{$composer.student.name}"/>

但是我想用这样的东西

<cell width='$composer.fullWidth?"70%":"50%"'>

在我的作曲家中,我有一个带有正确 getter 的布尔值 fullWidth,但我无法在作曲家中引用它。我已经尝试了很多,但似乎没有任何效果。

我试过了

<cell width='@{$composer.fullWidth}?"70%":"50%"'>
<cell width='{$composer.fullWidth}?"70%":"50%"'>
<cell width='@{composer.fullWidth}?"70%":"50%"'>

另一个问题:如果我有这样的代码:

<textbox id='test' if='expression'/>

如何使用 Java 代码或使用 if 代码?不可能吗?

类似于:

test.setIf(boolean???????)

首先,请使用正确的MVVM。
@{} 是从 zk6.0 到创建的 MVVM 的错误版本。
您甚至无法在 ZK 文档中找到它!

使用真正的 MVVM :

@load(vm.fullwidth?'70%':'50%')

第二个问题:
if 属性是一个特殊的属性。只有静态绑定在这里起作用,因为如果它被评估为假,组件将不会在 DOM.
中呈现 因此,如果您可以将此组件添加到 DOM.

,则要么使用可见的,要么在 javacode 中使用额外的检查