[Tutorial] Belajar ZKoss Yuu…

Karena kebutuhan project yang mengharuskan gw bikin aplikasi RIA yang jalan diatas browser, gw terpaksa cari-cari framework AJAX yang cepet jadinya dan bagus tampilannya. ZKoss adalah pilihan pertama gw, kebetulan background gw Java jadinya ga terlalu sulit codingin si ZKoss ini.

Disini gw akan coba bikin aplikasi CRUD sederhana banget, antara ZKoss sebagai UI-nya, MySQL sebagai databasenya dan Hibernate buat menghubungkan keduanya. IDE yg gw pakek adalah Netbeans dan Webserver gw Apache Tomcat.

Kita mulai dengan struktur database gw,
nama database “test”, nama table “person”.

CREATE TABLE person
(
        name VARCHAR(20) NOT NULL,
        gender VARCHAR(10),
        birthdate DATE,
        age INT,
        PRIMARY KEY (name)
)

insert into person (name, gender, birthdate, age) values ('Christian Gonzales', 'Male', '1988-12-24', 29);
insert into person (name, gender, birthdate, age) values ('Firman Utina', 'Male', '1977-11-20', 28);
insert into person (name, gender, birthdate, age) values ('Irfan Bachdim', 'Male', '1990-01-01', 19);
insert into person (name, gender, birthdate, age) values ('Julia Perez', 'Female', '1966-04-18', 64);

Kemudian javabean dan hibernate xml-nya.

package com.baculsoft.zk.bean;

import java.util.Date;

public class Person {
    
    private String name;
    private int age;
    private String gender;
    private Date birthdate;

    public Person(String name, int age, String gender, Date birthdate) {
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.birthdate = birthdate;
    }

    public Person() {
    }    

    // other setter getter

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class catalog="test" name="com.baculsoft.zk.bean.Person" table="person">
    <id name="name" type="string">
      <column length="20" name="name"/>
      <generator class="assigned"/>
    </id>
    <property name="gender" type="string">
      <column length="10" name="gender"/>
    </property>
    <property name="birthdate" type="date">
      <column length="10" name="birthdate"/>
    </property>
    <property name="age" type="java.lang.Integer">
      <column name="age"/>
    </property>
  </class>
</hibernate-mapping>

Jangan sampe lupa settingan hibernate.cfg.xml-nya yeh.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">password</property>
    <property name="hibernate.connection.autocommit">true</property>
    <property name="hibernate.show_sql">true</property>
    <mapping resource="com/baculsoft/zk/bean/Person.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

abis itu gw bikin class PersonDAO buat handle transaksi ke db

package com.baculsoft.zk.dao;

import com.baculsoft.zk.bean.Person;
import java.util.List;
import org.hibernate.Session;

// disini pake hibernate util bawaan zkoss
import org.zkoss.zkplus.hibernate.HibernateUtil;

public class PersonDAO {

    public List<Person> findAll() throws Exception {
        Session session = HibernateUtil.getSessionFactory().openSession();
        return (List<Person>) session.createCriteria(Person.class).list();
    }

    public boolean delete(Person person) throws Exception {
        if (person == null) {
            throw new Exception("empty person");
        }
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.delete(person);
        session.flush();
        session.close();
        return true;
    }

    public boolean insert(Person person) throws Exception {
        if (person == null) {
            throw new Exception("empty person");
        }
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.save(person);
        session.flush();
        session.close();
        return true;
    }

    public boolean update(Person person) throws Exception {
        if (person == null) {
            throw new Exception("empty person");
        }
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.update(person);
        session.flush();
        session.close();
        return true;
    }
}

nah, ini class Service adalah salah satu class yang paling diperlukan, coba cek baris ke 34, 43 dan 51. Itu method2 jadi semacem “listener” buat “event” yang terjadi di aplikasi.

package com.baculsoft.zk.service;

import com.baculsoft.zk.bean.Person;
import com.baculsoft.zk.dao.PersonDAO;
import java.util.List;
import org.apache.log4j.Logger;
import org.zkoss.zk.ui.util.GenericForwardComposer;

public class PersonService extends GenericForwardComposer {

    private PersonDAO dao = new PersonDAO();
    private Person person = new Person();
    
    private Logger logger = Logger.getLogger(PersonService.class);

    public Person getCurrent() {
        return person;
    }

    public void setCurrent(Person person) {
        this.person = person;
    }

    public List<Person> getAllPersons() {
        try {
            return dao.findAll();
        } catch (Exception ex) {
            logger.error(ex.getMessage(), ex);
            return null;
        }

    }

    public void onClick$add() {
        try {
            Person nowPerson = new Person(person.getName(), person.getAge(), person.getGender(), person.getBirthdate());
            dao.insert(nowPerson);
        } catch (Exception ex) {
            logger.error(ex.getMessage(), ex);
        }
    }

    public void onClick$update() {
        try {
            dao.update(person);
        } catch (Exception ex) {
            logger.error(ex.getMessage(), ex);
        }
    }

    public void onClick$delete() {
        try {
            dao.delete(person);
        } catch (Exception ex) {
            logger.error(ex.getMessage(), ex);
        }
    }
}

berikut ini adalah yang terpenting dari si aplikasi zkoss, yaitu UI-nya. Gw kasih nama “index.zul” (extension .zul bisa diganti sesuka loe di dalem web.xml). Perhatikan baris ke 34, 35 dan 36. Id-nya button harus sama dengan nama method di class PersonService. Dibaris ke 3 adalah class yang didaftarkan sebagai listener.

<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"?>
<window id="win" width="900px" title="Person" border="normal" 
    apply="com.baculsoft.zk.service.PersonService">
    <listbox id="box" multiple="true" rows="5"
        model="@{win$composer.allPersons, load-after='add.onClick, delete.onClick, update.onClick'}"
        selectedItem="@{win$composer.current}">

        <listhead>
            <listheader label="Name" sort="auto(name)"/>
            <listheader label="Age" width="80px" sort="auto(age)" />
            <listheader label="Gender" width="170px" sort="auto(gender)" />
            <listheader label="Birthdate" width="170px" sort="auto(birthdate)" />
        </listhead>

        <listitem self="@{each='person'}" value="@{person}">
            <listcell label="@{person.name}"/>
            <listcell label="@{person.age}"/>
            <listcell label="@{person.gender}"/>
            <listcell label="@{person.birthdate}"/>
        </listitem>

    </listbox>

    <groupbox>
        <caption label="Person" />
        Name: <textbox id="name" cols="25" value="@{win$composer.current.name}" />
        Age: <intbox id="age" cols="1" value="@{win$composer.current.age}" />
        Gender: <combobox id="gender" value="@{win$composer.current.gender}">
                    <comboitem label="Male" description="Alpha Male"/>
                    <comboitem label="Female" description="Girl Power"/>
                    <comboitem label="Others" description="WTF..?!?!"/>
                </combobox>
        Birthdate: <datebox id="birthdate" cols="8" value="@{win$composer.current.birthdate}" />
        <button id="add" label="Add" height="24px"/>
        <button id="update" label="Update" height="24px"/>
        <button id="delete" label="Delete" height="24px"/>
    </groupbox>
</window>

last but not least, komponen terpenting dari aplikasi gw, yaitu web.xml.

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <description><![CDATA[Edw's ZK Application]]></description>
    <display-name>ZKossTest</display-name>

    <listener>
        <description>ZK listener for session cleanup</description>
        <listener-class>org.zkoss.zk.ui.http.HttpSessionListener</listener-class>
    </listener>
    <servlet>
        <description>ZK loader for ZUML pages</description>
        <servlet-name>zkLoader</servlet-name>
        <servlet-class>org.zkoss.zk.ui.http.DHtmlLayoutServlet</servlet-class>

        <init-param>
            <param-name>update-uri</param-name>
            <param-value>/zkau</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>zkLoader</servlet-name>
        <url-pattern>*.zul</url-pattern>
    </servlet-mapping>

    <servlet>
        <description>The asynchronous update engine for ZK</description>
        <servlet-name>auEngine</servlet-name>
        <servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>auEngine</servlet-name>
        <url-pattern>/zkau/*</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.zul</welcome-file>
    </welcome-file-list>
</web-app>

nanti kalo berhasil dijalankan akan tampil seperti ini di browser,

Berikut adalah struktur project netbeans gw, btw untuk library ZKoss dan Hibernate bisa di download dari web masing-masing.


Btw, contoh project gw bisa di download disini. Ternyata ZKoss ngga terlalu susah kan? (*)

20 thoughts on “[Tutorial] Belajar ZKoss Yuu…”

  1. salam kenal mas Bro,
    mantap banget tutorialnya nich, saya belajar baru belajar zk. masih baca2 dokumentasinya zk.
    sudah saya coba di atas, kok sepertinya gampang yach untuk melakukan CRUD.
    saya bandingkan dengan ada yang di dokumentasinya gampang ini ternyata. tapi saya masih bertanya2, kalo di dokumentasinya untuk membuat listener dan Event kita harus membuat misal keyword pada sebuah variabel dan method:
    @Wired
    @Listen
    tapi tutorial di atas kok ndak ada, pada class PersonService. sebenarnya yang membedakan apa sich? (Y)

    1. sebenernya gini bro, onClick$add() itu mirip2 kayak @Listen. Tapi dulu seinget gw belum ada @Listen. Atau mungkin udah ada tapi gw yg engga tau yak, hahaaaa

  2. ok baiklah,,,
    mw nanya lagi mas, itu kan baru satu windows satu view yach. gimana sich caranya biar, misalkan dalam satu windows viewnya bisa ganti2.
    misalkan kalo di desktop, kan hanya satu frame truz nanti pake internalFrame yang diletakkan di desktopPan dan diadd ke frame.
    kalo di zk gimana yach? (C)

    1. Hi Krisna,
      coba buka2 webnya zkoss deh, dulu sempet baca2 ebooknya juga sih (books.zkoss.org/?)

    2. saya mau tanya lagi gan?,,

      itu yg
      @{win$composer.current}
      @{win$composer.allPersons}
      dapet dr mana yg gan?

      masih bingun buat nampilin data ke listboxnya

    3. Hi krisna,
      allPersons adalah method yg pertama kali di-load
      sedangkan win$composer.current itu menunjukkan object yg saat itu sedang dipilih

    4. public List findAll() throws Exception {
      Session session = HibernateUtil.getSessionFactory().openSession();
      return (List) session.createCriteria(Person.class).list();
      }
      saya coba coding yg ini tp datanya saya kok tetep gk tampil ya,,
      apa ada yg kurang di coding saya?
      😀

  3. bang maaf pas di running tampil error sperti ini
    java.lang.NumberFormatException: For input string: “”
    java.lang.NumberFormatException.forInputString(Unknown Source)
    java.lang.Integer.parseInt(Unknown Source)
    java.lang.Integer.(Unknown Source)
    org.zkoss.lang.Classes.coerce(Classes.java:1321)
    org.zkoss.zk.xel.ExValue.coerce(ExValue.java:114)
    org.zkoss.zk.xel.ExValue.getValue(ExValue.java:109)
    org.zkoss.zk.ui.metainfo.Property.getValue(Property.java:134)
    org.zkoss.zk.ui.metainfo.Property.assign0(Property.java:227)
    org.zkoss.zk.ui.metainfo.Property.assign(Property.java:169)
    org.zkoss.zk.ui.metainfo.ComponentInfo.applyProperties(ComponentInfo.java:729)
    org.zkoss.zk.ui.impl.AbstractUiFactory.newComponent(AbstractUiFactory.java:106)
    org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:857)
    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)
    org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:872)
    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)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:442)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:356)
    org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:215)
    org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:136)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

  4. error bro, gmn ini?
    type Exception report

    message Servlet execution threw an exception

    description The server encountered an internal error that prevented it from fulfilling this request.

    exception

    javax.servlet.ServletException: Servlet execution threw an exception
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

    root cause

    java.lang.NoClassDefFoundError: Could not initialize class com.baculsoft.zk.service.PersonService
    java.lang.Class.forName0(Native Method)
    java.lang.Class.forName(Class.java:340)
    org.zkoss.lang.Classes.forNameByThread(Classes.java:268)
    org.zkoss.lang.ImportedClassResolver.resolveClass(ImportedClassResolver.java:121)
    org.zkoss.zk.ui.impl.PageImpl.resolveClass(PageImpl.java:478)
    org.zkoss.zk.ui.impl.AbstractUiFactory.newComposer(AbstractUiFactory.java:142)
    org.zkoss.zk.ui.impl.Utils.newComposer(Utils.java:89)
    org.zkoss.zk.ui.metainfo.ComponentInfo.toComposer(ComponentInfo.java:355)
    org.zkoss.zk.ui.metainfo.ComponentInfo.toComposers(ComponentInfo.java:323)
    org.zkoss.zk.ui.metainfo.ComponentInfo.resolveComposer(ComponentInfo.java:310)
    org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:786)
    org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:778)
    org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:687)
    org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:651)
    org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:824)
    org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:778)
    org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:687)
    org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:651)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:401)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:316)
    org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:215)
    org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:136)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

    note The full stack trace of the root cause is available in the Apache Tomcat/8.0.3 logs.

    1. Hi Iobe,
      itu errornya “java.lang.NoClassDefFoundError”, coba scroll error lognya,
      kali aja nemu error yg lebih detail.

  5. saya dapat error ky gini bang, saat runnig di browser: message No CurrentSessionContext configured!

    mohon bantuannya bang Edwin. Trims.

  6. surya handoko

    bro , bisa kasih contoh untuk combobox yang join ke table laen gak ?
    misal table karyawan dengan jabatan misah fk nya di tbl karyawan jabatan_id yg jadi primary key d table jabatan ,
    ane dah coba buat crudnya pake hibernate kalau save oke combobox bisa di pilih dan data bisa masuk k database, cuma pas edit data di kirim ke form event selectItem
    combobox jabatannya ketika di pilih ada error :

    Cannot convert com.cjfi.project.entity.Jabatan@4a8a9644 of type class com.cjfi.project.entity.Jabatan to class com.cjfi.project.entity.Jabatan_$$_jvsta03_5 at [file:/C:/Users/surya/Documents/NetBeansProjects/project/target/SpringMVC/WEB-INF/zul/karyawan.zul, line:27]

    ini script combobox nya
    Jabatan:

    kira-kira salah dimana ya , thanks

  7. Irawan Papang Subakti

    Bang permisi… mw nanya…errornya dsini knpa ya??? mohon bantuannya gan…

    HTTP Status 500 – Servlet execution threw an exception
    type Exception report

    message Servlet execution threw an exception

    description The server encountered an internal error that prevented it from fulfilling this request.

    exception

    javax.servlet.ServletException: Servlet execution threw an exception
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    root cause

    java.lang.ExceptionInInitializerError
    org.zkoss.zkplus.hibernate.HibernateUtil.initSessionFactory(HibernateUtil.java:126)
    org.zkoss.zkplus.hibernate.HibernateUtil.initSessionFactory(HibernateUtil.java:112)
    org.zkoss.zkplus.hibernate.HibernateUtil.getSessionFactory(HibernateUtil.java:71)
    com.baculsoft.zk.dao.PersonDAO.findAll(PersonDAO.java:13)
    com.baculsoft.zk.service.PersonService.getAllPersons(PersonService.java:26)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:498)
    org.zkoss.lang.reflect.Fields.get(Fields.java:114)
    org.zkoss.zkplus.databind.DataBinder.fetchValue(DataBinder.java:1018)
    org.zkoss.zkplus.databind.DataBinder.myGetBeanWithExpression(DataBinder.java:1004)
    org.zkoss.zkplus.databind.DataBinder.getBeanAndRegisterBeanSameNodes(DataBinder.java:972)
    org.zkoss.zkplus.databind.Binding.loadAttribute(Binding.java:335)
    org.zkoss.zkplus.databind.DataBinder.loadAttrs(DataBinder.java:585)
    org.zkoss.zkplus.databind.DataBinder.loadComponent0(DataBinder.java:542)
    org.zkoss.zkplus.databind.DataBinder.loadAll(DataBinder.java:570)
    org.zkoss.zkplus.databind.AnnotateDataBinderInit.doAfterCompose(AnnotateDataBinderInit.java:186)
    org.zkoss.zk.ui.impl.Initiators$RealInits.doAfterCompose(Initiators.java:125)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:402)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:316)
    org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:215)
    org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:135)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    root cause

    java.lang.NoClassDefFoundError: javax/persistence/EntityListeners
    org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.getDefaults(JPAMetadataProvider.java:100)
    org.hibernate.annotations.common.reflection.java.JavaReflectionManager.getDefaults(JavaReflectionManager.java:252)
    org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1386)
    org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844)
    org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928)
    org.zkoss.zkplus.hibernate.HibernateUtil.initSessionFactory(HibernateUtil.java:119)
    org.zkoss.zkplus.hibernate.HibernateUtil.initSessionFactory(HibernateUtil.java:112)
    org.zkoss.zkplus.hibernate.HibernateUtil.getSessionFactory(HibernateUtil.java:71)
    com.baculsoft.zk.dao.PersonDAO.findAll(PersonDAO.java:13)
    com.baculsoft.zk.service.PersonService.getAllPersons(PersonService.java:26)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:498)
    org.zkoss.lang.reflect.Fields.get(Fields.java:114)
    org.zkoss.zkplus.databind.DataBinder.fetchValue(DataBinder.java:1018)
    org.zkoss.zkplus.databind.DataBinder.myGetBeanWithExpression(DataBinder.java:1004)
    org.zkoss.zkplus.databind.DataBinder.getBeanAndRegisterBeanSameNodes(DataBinder.java:972)
    org.zkoss.zkplus.databind.Binding.loadAttribute(Binding.java:335)
    org.zkoss.zkplus.databind.DataBinder.loadAttrs(DataBinder.java:585)
    org.zkoss.zkplus.databind.DataBinder.loadComponent0(DataBinder.java:542)
    org.zkoss.zkplus.databind.DataBinder.loadAll(DataBinder.java:570)
    org.zkoss.zkplus.databind.AnnotateDataBinderInit.doAfterCompose(AnnotateDataBinderInit.java:186)
    org.zkoss.zk.ui.impl.Initiators$RealInits.doAfterCompose(Initiators.java:125)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:402)
    org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:316)
    org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:215)
    org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:135)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    note The full stack trace of the root cause is available in the Apache Tomcat/7.0.86 logs.

    Apache Tomcat/7.0.86

Leave a Reply to krisna Cancel Reply

Your email address will not be published.