Model view controller ZK MVC:我怎么能等到另一个成分的合成

Model view controller ZK MVC:我怎么能等到另一个成分的合成,model-view-controller,zk,Model View Controller,Zk,我正在从事一个ZK项目,使用ZK MVC方法。我试图做的是在编写div之后初始化“panel”,但问题是我得到了一个“java.lang.NullPointerException” 这些都是我尝试做的一个简单的例子。我的视图“mypage.zul” 我的控制者:“展示” 公共类显示扩展选择器或编译器{ @电线 复选框objectif\u复选框; @电线 小组工作量; public void doAfterCompose(Div comp)引发异常{ super.doAfterCompose(

我正在从事一个ZK项目,使用ZK MVC方法。我试图做的是在编写div之后初始化“panel”,但问题是我得到了一个“java.lang.NullPointerException”

这些都是我尝试做的一个简单的例子。我的视图“mypage.zul”


我的控制者:“展示”

公共类显示扩展选择器或编译器{
@电线
复选框objectif\u复选框;
@电线
小组工作量;
public void doAfterCompose(Div comp)引发异常{
super.doAfterCompose(comp);
panelworkload.setTitle(“hello workload”);
}
}
这是我得到的一个例外

java.lang.NullPointerException dashboard.display.doAfterCompose(display.java:24) dashboard.display.doAfterCompose(display.java:1) org.zkoss.zk.ui.impl.UiEngineImpl.doAfterCompose(UiEngineImpl.java:578) org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:880) org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:826) org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:735) org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:699)

到目前为止,我所了解到的是,div是在portallayout之前编写的,这就是为什么创建div时服务器无法重新激活portallayout的原因


有人能帮我吗?我有点困在这里了…谢谢你

zk framework的
面板
对象的
setTitle
方法如下:

public void setTitle(String title) {
    if (title == null)
    title = "";
    if (!Objects.equals(_title, title)) {
        _title = title;
        smartUpdate("title", _title);
    }
}
里面没有任何东西会抛出
NullPointerException
。(堆栈跟踪将指示它)

因此,
panelworkload
doAfterCompose(comp)
对象中当前应为空

我建议您通读上的几个答案,尽管它们没有很好地解释如何诊断NullPointerException错误,也没有解释如何跟踪堆栈跟踪


要么
panelworkload
为空,要么传递给
doAfterCompose(comp)
的Div为空。no的重复项它们不为null,当我删除这一行“panelworkload.setTitle(“hello workload”);”时,它工作正常,当我将它添加到事件中时,它们也工作正常,没有一个为null
public class display extends SelectorComposer<Div>{

@Wire
Checkbox  objectif_checkbox;

@Wire
Panel  panelworkload;

public void doAfterCompose(Div comp) throws Exception {
    super.doAfterCompose(comp);

    panelworkload.setTitle("hello workload");

    }
}
public void setTitle(String title) {
    if (title == null)
    title = "";
    if (!Objects.equals(_title, title)) {
        _title = title;
        smartUpdate("title", _title);
    }
}