i m working on a ZK project , using ZK MVC approach. what i did try to do is to initalize "a panel" after doAfterCompose a div , but the problem is that i got a "java.lang.NullPointerException"
and those are a simple exemple of what i did try to do . My view "mypage.zul"
<zk>
<borderlayout>
<west width="140px" splittable="true" collapsible="true" maxsize="140">
<div align="center" apply="dashboard.display">
<label value="WorkLoad"></label><checkbox></checkbox>
</div>
</west>
<center autoscroll="true" >
<div>
<portallayout id="portalLayout" maximizedMode="whole" width="100%" >
<portalchildren >
<panel id="panelworkload" >
<panelchildren>
<div width="100%" >
<charts id="workloadDay" type="column" />
</div>
</panelchildren>
</panel>
</portalchildren>
</portallayout>
</div>
</center>
</borderlayout>
</zk>
My conroler : "display"
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");
}
}
and this is the exception that i got
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)
what i have throught of it so far is that the div has been composed before the portallayout , that why the server cant reconize portallayout when div is created
can anyone help me pls ? i m kinda stuck here ...and thank you
The setTitle
method for zk framework's Panel
object is the following:
public void setTitle(String title) {
if (title == null)
title = "";
if (!Objects.equals(_title, title)) {
_title = title;
smartUpdate("title", _title);
}
}
There is nothing in there that would throw a NullPointerException
. (And the stack trace would indicate it)
Therefore, the panelworkload
should currently be null in the doAfterCompose(comp)
object.
I would recommend you read through several of the answers on What is a NullPointerException, and how do I fix it? , although they do not do a great job of explaining how to diagnose a NullPointerException error, nor how to follow a stack trace.