The recorded video of the first ever ZK Webinar which was held last Thursday 2nd June with great response from the ZK community is now available for those who were unable to attend at:

[youtube]4oKHSG5ro84[/youtube]

Here are the webinar slides: Best Practice of using ZK with JSP

And here is the sample code: messageboard

I have created a small application to demonstrate how users can use ZK with JSP.

Combining the two technologies, you can implement native HTML with highly customizable styling to gain a lot of static content benefits from plain old JSP while also leveraging the whole power of ZK’s rich widget sets and handling long operations asynchronously through the ZK Event Driven Programming Model.

This combination can help purify your application’s presentation side architecture and make it easier to refactor, extend and understand by other developers. On top of this, I have also introduced some designing patterns and useful APIs for programming using ZK.

Thanks for watching, and please feel free to give me any advice!

If you enjoyed this post, please consider leaving a comment or subscribing to the RSS feed to have future articles delivered to your feed reader.

6 Responses to “ZK Webinar 1 – Best Practice of using ZK with JSP”

  1. Timo says:

    Awesome!
    Thanks for sharing.

    (I didn’t even know that this blog existed :0))

  2. Giuliano says:

    Good webinar material!

    Hope you promote more webinar soon.

    Thank you for share.

  3. Ryan Wu says:

    Great job! Ian !

  4. poker wen says:

    that’s great .. eager for your next webinar

  5. Fred says:

    First attempt to deploy this to Google App Engine failed. Adding serialized objects did display the message board but the Join button does not respond. Will have another look at it – but nice if ZK makes a Cloud ready sample too 😉

  6. santiago says:

    type Informe de Excepción

    mensaje

    descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.

    excepción

    org.apache.jasper.JasperException: org.zkoss.zk.ui.UiException: javax.servlet.jsp.JspException: javax.servlet.jsp.JspException: javax.servlet.jsp.JspException: java.lang.NullPointerException
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:500)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:428)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    causa raíz

    org.zkoss.zk.ui.UiException: javax.servlet.jsp.JspException: javax.servlet.jsp.JspException: javax.servlet.jsp.JspException: java.lang.NullPointerException
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    java.lang.reflect.Constructor.newInstance(Unknown Source)
    org.zkoss.lang.Classes.newInstance(Classes.java:76)
    org.zkoss.lang.Exceptions.wrap(Exceptions.java:162)
    org.zkoss.zk.ui.UiException$Aide.wrap(UiException.java:44)
    org.zkoss.jsp.zul.impl.RootTag$MyRichlet.service(RootTag.java:328)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:418)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:302)
    org.zkoss.jsp.zul.impl.RootTag.doTag(RootTag.java:275)
    org.apache.jsp.index_jsp._jspx_meth_z_005fpage_005f2(index_jsp.java:435)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:217)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    causa raíz

    javax.servlet.jsp.JspException: javax.servlet.jsp.JspException: javax.servlet.jsp.JspException: java.lang.NullPointerException
    org.apache.jsp.index_jsp$Helper.invoke(index_jsp.java:774)
    org.zkoss.jsp.zul.impl.RootTag$MyRichlet.service(RootTag.java:320)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:418)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:302)
    org.zkoss.jsp.zul.impl.RootTag.doTag(RootTag.java:275)
    org.apache.jsp.index_jsp._jspx_meth_z_005fpage_005f2(index_jsp.java:435)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:217)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    causa raíz

    javax.servlet.jsp.JspException: javax.servlet.jsp.JspException: java.lang.NullPointerException
    org.zkoss.jsp.zul.impl.LeafTag.doCatch(LeafTag.java:140)
    org.zkoss.jsp.zul.impl.LeafTag.doTag(LeafTag.java:129)
    org.apache.jsp.index_jsp._jspx_meth_z_005fdiv_005f2(index_jsp.java:454)
    org.apache.jsp.index_jsp.access$3(index_jsp.java:440)
    org.apache.jsp.index_jsp$Helper.invoke3(index_jsp.java:658)
    org.apache.jsp.index_jsp$Helper.invoke(index_jsp.java:752)
    org.zkoss.jsp.zul.impl.RootTag$MyRichlet.service(RootTag.java:320)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:418)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:302)
    org.zkoss.jsp.zul.impl.RootTag.doTag(RootTag.java:275)
    org.apache.jsp.index_jsp._jspx_meth_z_005fpage_005f2(index_jsp.java:435)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:217)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    causa raíz

    javax.servlet.jsp.JspException: java.lang.NullPointerException
    org.zkoss.jsp.zul.impl.ComposerHandler.doAfterCompose(ComposerHandler.java:92)
    org.zkoss.jsp.zul.impl.LeafTag.afterComposeComponent(LeafTag.java:299)
    org.zkoss.jsp.zul.impl.LeafTag.doTag(LeafTag.java:126)
    org.apache.jsp.index_jsp._jspx_meth_z_005fdiv_005f2(index_jsp.java:454)
    org.apache.jsp.index_jsp.access$3(index_jsp.java:440)
    org.apache.jsp.index_jsp$Helper.invoke3(index_jsp.java:658)
    org.apache.jsp.index_jsp$Helper.invoke(index_jsp.java:752)
    org.zkoss.jsp.zul.impl.RootTag$MyRichlet.service(RootTag.java:320)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:418)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:302)
    org.zkoss.jsp.zul.impl.RootTag.doTag(RootTag.java:275)
    org.apache.jsp.index_jsp._jspx_meth_z_005fpage_005f2(index_jsp.java:435)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:217)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    causa raíz

    java.lang.NullPointerException
    java.util.ArrayList.(Unknown Source)
    org.zkoss.zul.ListModelList.(ListModelList.java:83)
    demo.AttendeesPanelViewCtrl.doAfterCompose(AttendeesPanelViewCtrl.java:52)
    org.zkoss.jsp.zul.impl.ComposerHandler.doAfterCompose(ComposerHandler.java:90)
    org.zkoss.jsp.zul.impl.LeafTag.afterComposeComponent(LeafTag.java:299)
    org.zkoss.jsp.zul.impl.LeafTag.doTag(LeafTag.java:126)
    org.apache.jsp.index_jsp._jspx_meth_z_005fdiv_005f2(index_jsp.java:454)
    org.apache.jsp.index_jsp.access$3(index_jsp.java:440)
    org.apache.jsp.index_jsp$Helper.invoke3(index_jsp.java:658)
    org.apache.jsp.index_jsp$Helper.invoke(index_jsp.java:752)
    org.zkoss.jsp.zul.impl.RootTag$MyRichlet.service(RootTag.java:320)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:418)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:302)
    org.zkoss.jsp.zul.impl.RootTag.doTag(RootTag.java:275)
    org.apache.jsp.index_jsp._jspx_meth_z_005fpage_005f2(index_jsp.java:435)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:217)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/6.0.32.

Leave a Reply