我的zkoss代码没有绑定java方法的值。
<window border="normal" id="home"
apply="com.test.HomeController">
<caption label="@{home.name}"></caption>
<button label="text"></button>
</window>
public class HomeController extends GenericForwardComposer{
public String getName() {
return "MY ZKOSS";
}
}
窗口标题未显示MY ZKOSS。任何人都可以告诉我这是什么问题吗?
答案 0 :(得分:5)
ZK可以使用MVVM模式。
<window id="win" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('myController')">
<caption label="@load(vm.myText)"></caption>
</window>
public class myController {
private String name = "MY ZKOSS";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
答案 1 :(得分:2)
label="${$composer.name}"
如果控制器从组件基类扩展,例如HomeController
从Window
扩展而不是GenericForwardComposer
,那么您尝试使用的数据绑定类型将起作用。要实现此目的,请将apply
更改为use
,如下所示
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
<window border="normal" id="home" use="com.test.HomeController">
<caption label="@{home.name}"></caption>
<button label="text"></button>
</window>
答案 2 :(得分:0)
这可能会对你有帮助。
控制器:
package foo;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zul.*;
public class MyComposer extends SelectorComposer<Window> {
@Wire
Textbox input;
@Wire
Label output;
@Listen("onClick=#ok")
public void submit() {
output.setValue(input.getValue());
}
@Listen("onClick=#cancel")
public void cancel() {
output.setValue("");
}
}
在你的zul:
<window apply="foo.MyComposer">
<div>
Input: <textbox id="input" />
</div>
<div>
Output: <label id="output" />
</div>
<button id="ok" label="Submit" />
<button id="cancel" label="Clear" />
</window>
成员字段输入,输出自动分配标识符为&#34;输入&#34;和&#34;输出&#34;分别。当用户点击相应的按钮时,将调用方法submit()和cancel()。
http://books.zkoss.org/wiki/ZK_Developer%27s_Reference/MVC/Controller/Composer#Custom_Controller