-
FEATURED COMPONENTS
First time here? Check out the FAQ!
DB table:
+---------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+----------------+
| category_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| category_desc | varchar(100) | YES | | NULL | |
| isparent | varchar(1) | NO | | N | |
| parentcat_id | int(10) unsigned | NO | MUL | | |
+---------------+------------------+------+-----+---------+----------------+
in above table structure parentcat_id is foreign key which references to category_id from same table.
i had created zeta DB form by using form builder .In order bring category desc value in combo i had done all changes in zul,controller and model. but due to self referential foreign key i get circular references bean error what should be done.
Error stack trace as below
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'prodcat_mainController': Injection of resource fields failed; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'parentcat_id' must be of type [org.zkoss.zul.Listbox], but was actually of type [org.zkoss.zul.Intbox]
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessAfterInstantiation(CommonAnnotationBeanPostProcessor.java:293)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:957)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:470)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
java.security.AccessController.doPrivileged(Native Method)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:302)
org.zkoss.spring.web.context.request.IdSpaceScope.get(IdSpaceScope.java:70)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:881)
org.zkoss.spring.SpringUtil.getBean(SpringUtil.java:54)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindController(ZkSpringBeanBindingComposer.java:116)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindControllers(ZkSpringBeanBindingComposer.java:109)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindComponent(ZkSpringBeanBindingComposer.java:92)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.doAfterCompose(ZkSpringBeanBindingComposer.java:68)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:640)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:587)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:531)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:563)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:531)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:498)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:378)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:299)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:229)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:165)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
root cause
org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'parentcat_id' must be of type [org.zkoss.zul.Listbox], but was actually of type [org.zkoss.zul.Intbox]
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:168)
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:427)
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:502)
org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:180)
org.springframework.beans.factory.annotation.InjectionMetadata.injectFields(InjectionMetadata.java:105)
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessAfterInstantiation(CommonAnnotationBeanPostProcessor.java:290)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:957)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:470)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
java.security.AccessController.doPrivileged(Native Method)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:302)
org.zkoss.spring.web.context.request.IdSpaceScope.get(IdSpaceScope.java:70)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:881)
org.zkoss.spring.SpringUtil.getBean(SpringUtil.java:54)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindController(ZkSpringBeanBindingComposer.java:116)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindControllers(ZkSpringBeanBindingComposer.java:109)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindComponent(ZkSpringBeanBindingComposer.java:92)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.doAfterCompose(ZkSpringBeanBindingComposer.java:68)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:640)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:587)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:531)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:563)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:531)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:498)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:378)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:299)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:229)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:165)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
--------------------------------------------------------------------------------
Another error regarding circular reference
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'prodcat_mainController': Injection of resource fields failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'parentcat_id': Invocation of init method failed; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'parentcat_id': Requested bean is currently in creation: Is there an unresolvable circular reference?
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessAfterInstantiation(CommonAnnotationBeanPostProcessor.java:293)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:957)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:470)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
java.security.AccessController.doPrivileged(Native Method)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:302)
org.zkoss.spring.web.context.request.IdSpaceScope.get(IdSpaceScope.java:70)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:881)
org.zkoss.spring.SpringUtil.getBean(SpringUtil.java:54)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindController(ZkSpringBeanBindingComposer.java:116)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindControllers(ZkSpringBeanBindingComposer.java:109)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindComponent(ZkSpringBeanBindingComposer.java:92)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.doAfterCompose(ZkSpringBeanBindingComposer.java:68)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:640)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:587)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:531)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:563)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:531)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:498)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:378)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:299)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:229)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:165)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
root cause
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'parentcat_id': Invocation of init method failed; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'parentcat_id': Requested bean is currently in creation: Is there an unresolvable circular reference?
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1336)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
java.security.AccessController.doPrivileged(Native Method)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:302)
org.zkoss.spring.web.context.request.IdSpaceScope.get(IdSpaceScope.java:70)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:168)
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:427)
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:502)
org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:180)
org.springframework.beans.factory.annotation.InjectionMetadata.injectFields(InjectionMetadata.java:105)
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessAfterInstantiation(CommonAnnotationBeanPostProcessor.java:290)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:957)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:470)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
java.security.AccessController.doPrivileged(Native Method)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:302)
org.zkoss.spring.web.context.request.IdSpaceScope.get(IdSpaceScope.java:70)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:881)
org.zkoss.spring.SpringUtil.getBean(SpringUtil.java:54)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindController(ZkSpringBeanBindingComposer.java:116)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindControllers(ZkSpringBeanBindingComposer.java:109)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindComponent(ZkSpringBeanBindingComposer.java:92)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.doAfterCompose(ZkSpringBeanBindingComposer.java:68)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:640)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:587)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:531)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:563)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:531)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:498)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:378)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:299)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:229)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:165)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
root cause
org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'parentcat_id': Requested bean is currently in creation: Is there an unresolvable circular reference?
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:224)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:881)
org.zkoss.spring.DelegatingVariableResolver.resolveVariable(DelegatingVariableResolver.java:80)
org.zkoss.zk.ui.impl.PageImpl.resolveVariable(PageImpl.java:463)
org.zkoss.zk.ui.impl.PageImpl.access$300(PageImpl.java:113)
org.zkoss.zk.ui.impl.PageImpl$NS.getVariable(PageImpl.java:1194)
org.zkoss.zk.scripting.util.SimpleNamespace.getVariable(SimpleNamespace.java:93)
org.zkoss.zk.ui.AbstractComponent.getVariable(AbstractComponent.java:797)
org.zkoss.spring.bean.ZkComponentFactoryBean.getObject0(ZkComponentFactoryBean.java:138)
org.zkoss.spring.bean.ZkComponentFactoryBean.getObjectType(ZkComponentFactoryBean.java:174)
org.zkoss.spring.bean.ZkComponentFactoryBean.afterPropertiesSet(ZkComponentFactoryBean.java:184)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1367)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1333)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
java.security.AccessController.doPrivileged(Native Method)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:302)
org.zkoss.spring.web.context.request.IdSpaceScope.get(IdSpaceScope.java:70)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:168)
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:427)
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:502)
org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:180)
org.springframework.beans.factory.annotation.InjectionMetadata.injectFields(InjectionMetadata.java:105)
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessAfterInstantiation(CommonAnnotationBeanPostProcessor.java:290)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:957)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:470)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
java.security.AccessController.doPrivileged(Native Method)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:302)
org.zkoss.spring.web.context.request.IdSpaceScope.get(IdSpaceScope.java:70)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:881)
org.zkoss.spring.SpringUtil.getBean(SpringUtil.java:54)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindController(ZkSpringBeanBindingComposer.java:116)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindControllers(ZkSpringBeanBindingComposer.java:109)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.bindComponent(ZkSpringBeanBindingComposer.java:92)
org.zkoss.spring.config.ZkSpringBeanBindingComposer.doAfterCompose(ZkSpringBeanBindingComposer.java:68)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:640)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:587)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:531)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:563)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:531)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:498)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:378)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:299)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:229)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:165)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
package zkadsmine.prodcat_main; import javax.annotation.Resource; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.zkoss.spring.context.annotation.AfterCompose; import org.zkoss.spring.context.annotation.AppliedTo; @Scope("idspace") @Controller @AppliedTo("prodcat_mainWin") public class Prodcat_mainController extends zkadsmine.prodcat_main.base.Prodcat_mainControllerBase { @Resource protected Prodcat_mainModel prodcat_mainModel; public Prodcat_mainModel getProdcat_mainModel(){ return prodcat_mainModel; } @AfterCompose public void afterCompose() { super.afterCompose(); } }
<b >Prodcat_main.java</b> package zkadsmine.prodcat_main.base; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.Table; @Entity @Table( name = "prodcat_main") public class Prodcat_main { //Generate Class Body. public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Prodcat_main)) return false; Prodcat_main other = (Prodcat_main) obj; if (this.getCategory_id() == null) { if (other.getCategory_id() != null)return false; } else if (! this.getCategory_id().equals(other.getCategory_id()))return false; return true; } public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((this.getCategory_id() == null) ? 0 : this.getCategory_id().hashCode()); return result; } @Column(name = "category_id", nullable=false) @Id @GeneratedValue protected Long category_id; public void setCategory_id(Long value) { this.category_id = value; } public Long getCategory_id(){ return this.category_id; } @Column(name = "category_desc") protected String category_desc; public void setCategory_desc(String value) { this.category_desc = value; } public String getCategory_desc(){ return this.category_desc; } @Column(name = "isparent", nullable=false) protected String isparent; public void setIsparent(String value) { this.isparent = value; } public String getIsparent(){ return this.isparent; } /*@Column(name = "parentcat_id", nullable=false) protected Long parentcat_id; public void setParentcat_id(Long value) { this.parentcat_id = value; } public Long getParentcat_id(){ return this.parentcat_id; } */ @javax.persistence.ManyToOne @JoinColumn(name ="parentcat_id", nullable=true) Prodcat_main prodcat_main; public void setProdcat_main(Prodcat_main value) { this.prodcat_main= value; } public Prodcat_main getProdcat_main(){ return this.prodcat_main; } }
package zkadsmine.prodcat_main.base; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.HashMap; import java.util.Map; import javax.annotation.PostConstruct; import javax.annotation.Resource; import zkadsmine.prodcat_main.base.Prodcat_main; import org.zkoss.lang.Strings; import org.zkoss.spring.context.annotation.AfterCompose; import org.zkoss.spring.context.annotation.EventHandler; import org.zkoss.spring.jpa.EntityNotFoundException; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Desktop; import org.zkoss.zk.ui.Page; import org.zkoss.zk.ui.event.ClientInfoEvent; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.KeyEvent; import org.zkoss.zk.ui.event.SelectEvent; import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zkplus.databind.BindingListModel; import org.zkoss.zkplus.databind.DataBinder; /* */ import org.zkoss.zul.Button; import org.zkoss.zul.Checkbox; import org.zkoss.zul.Datebox; import org.zkoss.zul.FieldComparator; import org.zkoss.zul.Intbox; import org.zkoss.zul.Timebox; import org.zkoss.zul.Listbox; import org.zkoss.zul.Listheader; import org.zkoss.zul.Listitem; import org.zkoss.zul.Messagebox; import org.zkoss.zul.Paging; import org.zkoss.zul.Spinner; import org.zkoss.zul.Textbox; import org.zkoss.zul.Window; import org.zkoss.zul.Decimalbox; import org.zkoss.zul.event.PageSizeEvent; import org.zkoss.zul.event.PagingEvent; public abstract class Prodcat_mainControllerBase { /****** Field Edit Components *******/ @Resource protected Intbox category_id; @Resource protected Textbox category_desc; @Resource protected Textbox isparent; @Resource protected Listbox parentcat_id; /****** Zul Specific Application Control *******/ //main control window @Resource protected Window prodcat_mainWin; //main window @Resource protected Listbox prodcat_mainDataListView; //domain object summary list @Resource protected Paging prodcat_mainPaging; //paging control for summary list @Resource protected Component prodcat_mainDetail; //domain object detail @Resource protected Component prodcat_mainEdit; //edit panel //buttons @Resource protected Button prodcat_mainCreate; //new button @Resource protected Button prodcat_mainUpdate; //edit button @Resource protected Button prodcat_mainDelete; //delete button @Resource protected Button prodcat_mainSave; //save button @Resource protected Button prodcat_mainCancel; //cancel button /****** Bean Field Edit Components *******/ protected Prodcat_main _tmpSelected; //store original selected entity /****** Controller state Fields *******/ //ZK databinder protected DataBinder binder; //Prodcat_main Model @Resource protected Prodcat_mainModelBase prodcat_mainModel = null; //operation transient state protected boolean _create; //when new a entity protected boolean _editMode; //switch to edit mode when doing editing(new/update) protected int _lastSelectedIndex = -1; //last selectedIndex before delete protected boolean _supportPaging = true; //switch to use Paging protected boolean _supportFilter = true; //TODO: switch to use Filter protected String _filter; //filters public Prodcat_mainControllerBase(){} @AfterCompose public void afterCompose() { //initial to read one record so binder.loadAll() will not trigger unnecessary SQL //The prodcat_mainWin.onClientInfo will load correct lines if (isSupportPaging()) { prodcat_mainModel.setMaxResults(1); } binder = new AnnotateDataBinder(prodcat_mainWin); prodcat_mainWin.setVariable("prodcat_mainBinder", binder, true); binder.loadAll(); final List model = (List) prodcat_mainDataListView.getModel(); if (!model.isEmpty()) { prodcat_mainModel.setSelected((Prodcat_main)model.get(0)); binder.loadComponent(prodcat_mainDetail); } setFocus(); } public boolean isSupportPaging() { return _supportPaging; } public boolean isSupportFilter() { return _supportFilter; } public boolean isSupportExtra() { return isSupportFilter() || isSupportPaging(); } public void setFilter(String filter) { _filter = filter; } public String getFilter() { return _filter; } @Resource protected Button prodcat_mainQuery; @EventHandler("prodcat_mainQuery.onClick") public void doFilter(){ if (Strings.isBlank(_filter)) { prodcat_mainModel.setWhere(null); prodcat_mainModel.setParameters(null); } else { //TODO:shall process filter string into JPQL where statement here prepareQueryConditions(); } refreshModel(); } protected void prepareQueryConditions(){ prodcat_mainModel.setWhere(" category_desc LIKE :category_desc OR isparent LIKE :isparent"); final Map params = new HashMap(); params.put("category_desc", "%"+_filter+"%"); params.put("isparent", "%"+_filter+"%"); prodcat_mainModel.setParameters(params); } public Prodcat_mainModelBase getModel() { return prodcat_mainModel; } public void setModel(Prodcat_mainModelBase prodcat_mainModel) { this.prodcat_mainModel = prodcat_mainModel; } public void refreshModel() { binder.loadAttribute(prodcat_mainDataListView, "model"); //reload model to force refresh } //-- view/edit mode --// public void setEditMode(boolean b) { _editMode = b; switchMode(); } public boolean isViewMode() { return !_editMode; } public boolean isEditMode() { return _editMode; } public boolean isCreate() { return _create; } public boolean isNotSelected() { return this.prodcat_mainModel.getSelected() == null; } private void switchMode() { binder.loadComponent(prodcat_mainDetail); //reload visible to force refresh setFocus(); } private void setFocus() { //post event so doSetFocus after the listbox is loaded ready Events.postEvent(new Event("onSetFocus", prodcat_mainWin)); } @EventHandler("prodcat_mainWin.onSetFocus") public void doSetFocus() { if (_editMode) { category_id.focus(); } else { if (((List)prodcat_mainDataListView.getModel()).isEmpty()) { //no result in list, focus on new button prodcat_mainCreate.focus(); } else { if (_create) { prodcat_mainCreate.focus(); } else { setListFocus(); } } } } private void setListFocus() { final Listitem li = prodcat_mainDataListView.getSelectedItem(); if (li != null) { li.focus(); } else { if (prodcat_mainModel.getSelected() != null) { prodcat_mainCreate.focus(); } else { prodcat_mainCreate.focus(); } } } @EventHandler("prodcat_mainWin.onOK") public void doOK(Event event) { if (isEditMode()) { doSave(event); } else { doUpdate(event); } } @EventHandler("prodcat_mainWin.onClientInfo") public void doClientInfo(Event event) { if (isSupportPaging()) { final ClientInfoEvent evt = (ClientInfoEvent) event; int height = evt.getDesktopHeight(); int pageSize = Math.max((height - 130) / 14, 10); //estimated page size, at least 10 int currentPageSize = prodcat_mainModel.getMaxResults(); if (currentPageSize != pageSize) { prodcat_mainModel.setMaxResults(pageSize); final int inviewIndex = prodcat_mainDataListView.getSelectedIndex() < 0 ? prodcat_mainModel.getOffset() : (prodcat_mainModel.getOffset() + prodcat_mainDataListView.getSelectedIndex()); final int activePage = inviewIndex / pageSize; //new active page final int offset = activePage * pageSize; prodcat_mainModel.setOffset(offset); refreshModel(); prodcat_mainPaging.setPageSize(pageSize); prodcat_mainPaging.setActivePage(activePage); setFocus(); } } } @EventHandler("prodcat_mainPaging.onPaging") public void doPaging(Event event) { if (isSupportPaging()) { final int activePage = prodcat_mainPaging.getActivePage(); final int offset = activePage * prodcat_mainPaging.getPageSize(); prodcat_mainModel.setOffset(offset); refreshModel(); setFocus(); } } //-- prodcat_mainDataListView control --// @EventHandler("prodcat_mainDataListView.onSelect") public void doSelect(Event event) { final int index = prodcat_mainDataListView.getSelectedIndex(); if (index >= 0) { _lastSelectedIndex = index; _create = false; } } //-- view mode control --// @EventHandler("prodcat_mainWin.onCtrlKey") public void doCtrlKey(Event event) { final List items = prodcat_mainDataListView.getItems(); if (!items.isEmpty() && (!_editMode || !_create)) { final int keycode = ((KeyEvent) event).getKeyCode(); if (keycode == KeyEvent.DOWN || keycode == KeyEvent.UP){ //handle no selected item case if (prodcat_mainDataListView.getSelectedIndex() < 0) { //no selected item //try our best to guess one if (_lastSelectedIndex >= 0) { final int index = Math.min(items.size() - 1, _lastSelectedIndex); prodcat_mainDataListView.setSelectedIndex(index); Events.sendEvent(new SelectEvent("onSelect", prodcat_mainDataListView, prodcat_mainDataListView.getSelectedItems())); } } setListFocus(); } } } @EventHandler("prodcat_mainCreate.onClick") public void doCreate(Event event) { if (isViewMode()) { //prepare a new Prodcat_main _tmpSelected = prodcat_mainModel.getSelected(); _create = true; prodcat_mainModel.setSelected(new Prodcat_main()); //switch to edit mode setEditMode(true); } } @EventHandler("prodcat_mainUpdate.onClick") public void doUpdate(Event event) { if (isViewMode()) { if (prodcat_mainModel.getSelected() != null) { _create = false; //switch to edit mode setEditMode(true); } } } @EventHandler("prodcat_mainDelete.onClick") public void doDelete(Event event) { if (isViewMode()) { if (prodcat_mainModel.getSelected() != null) { _create = false; newConfirmDelete().show(); } } } @EventHandler("prodcat_mainDelete.onDeleteYes") public void doDeleteYes(Event event) { if (isViewMode()) { beforeDelete(); try { prodcat_mainModel.delete(); prodcat_mainCreate.focus(); } catch (EntityNotFoundException e) { //ignore, already deleted by others } prodcat_mainModel.setSelected(null); //refresh the todoList refreshModel(); //update the prodcat_mainDetail switchMode(); } } //-- sorting --// public void doSort(Event event) { final Listheader lh = (Listheader) event.getTarget(); final String sortDirection = lh.getSortDirection(); //original direction if ("ascending".equals(sortDirection)) { final Comparator cmpr = lh.getSortDescending(); if (cmpr instanceof FieldComparator) { final String orderBy = ((FieldComparator)cmpr).getOrderBy(); prodcat_mainModel.setOrderBy(orderBy); //update query string } } else if ("descending".equals(sortDirection) || "natural".equals(sortDirection) || Strings.isBlank(sortDirection)) { final Comparator cmpr = lh.getSortAscending(); if (cmpr instanceof FieldComparator) { final String orderBy = ((FieldComparator)cmpr).getOrderBy(); prodcat_mainModel.setOrderBy(orderBy); //update query string } } if (isSupportPaging()) { refreshModel(); } setFocus(); } //-- edit mode control --// @EventHandler("prodcat_mainSave.onClick") public void doSave(Event event) { if (isEditMode()) { //validate validate(); //save into prodcat_main binder.saveComponent(prodcat_mainEdit); //reload model to force refresh //store into db if (_create) { beforeCreate(); this.prodcat_mainModel.persist(); } else { beforeUpdate(); try { this.prodcat_mainModel.merge(); } catch (EntityNotFoundException e1) { try { Messagebox.show(getUpdateDeletedMessage()); } catch (InterruptedException e2) { //ignore } } } //refresh the todoList refreshModel(); //switch to view mode setEditMode(false); } } @EventHandler("prodcat_mainCancel.onClick,prodcat_mainWin.onCancel") public void doCancel(Event event) { if (isEditMode()) { //restore to original selected Prodcat_main if cancel from new if (_create) { prodcat_mainModel.setSelected(_tmpSelected); _tmpSelected = null; } //switch to view mode setEditMode(false); } } //--To be override--// /** Validate the input field */ protected void validate() { category_id.getValue(); isparent.getValue(); if(parentcat_id.getSelectedItem()==null){ parentcat_id.setSelectedIndex(0);} } /** The info message when end user trying to update a "deleted" entity. */ protected String getUpdateDeletedMessage() { return "Cannot find the selected item, might have been deleted by others."; } /** Get a instance of ConfirmDelete class */ protected ConfirmDelete newConfirmDelete() { return new ConfirmDelete(); } /** Delete Confirmation */ protected class ConfirmDelete { /** Show the ConfirmDelete Messagebox */ public void show() { try { Messagebox.show(getConfirmMessage(), getConfirmTitle(), Messagebox.YES+Messagebox.NO, Messagebox.EXCLAMATION, new org.zkoss.zk.ui.event.EventListener() { public void onEvent(Event event) { if ("onYes".equals(event.getName())) { doYes(); } } } ); } catch (InterruptedException ex) { //ignore } } /** Operation when end user click Yes button in confirm delete Messagebox*/ public void doYes() { //have to send Event to change the current IdSpace to "prodcat_mainWin" Events.sendEvent(new Event("onDeleteYes", prodcat_mainDelete)); } } protected String getConfirmMessage(){ return "Are you sure?"; } protected String getConfirmTitle(){ return "Are you sure you want to delete the selected item?"; } protected void beforeCreate(){ } protected void beforeUpdate(){ } protected void beforeDelete(){ } }
package zkadsmine.prodcat_main; import javax.annotation.Resource; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.zkoss.spring.context.annotation.AfterCompose; import org.zkoss.spring.context.annotation.AppliedTo; @Scope("idspace") @Controller @AppliedTo("prodcat_mainWin") public class Prodcat_mainController extends zkadsmine.prodcat_main.base.Prodcat_mainControllerBase { @Resource protected Prodcat_mainModel prodcat_mainModel; public Prodcat_mainModel getProdcat_mainModel(){ return prodcat_mainModel; } @AfterCompose public void afterCompose() { super.afterCompose(); } }
<b >Prodcat_main.java</b> package zkadsmine.prodcat_main.base; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.Table; @Entity @Table( name = "prodcat_main") public class Prodcat_main { //Generate Class Body. public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Prodcat_main)) return false; Prodcat_main other = (Prodcat_main) obj; if (this.getCategory_id() == null) { if (other.getCategory_id() != null)return false; } else if (! this.getCategory_id().equals(other.getCategory_id()))return false; return true; } public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((this.getCategory_id() == null) ? 0 : this.getCategory_id().hashCode()); return result; } @Column(name = "category_id", nullable=false) @Id @GeneratedValue protected Long category_id; public void setCategory_id(Long value) { this.category_id = value; } public Long getCategory_id(){ return this.category_id; } @Column(name = "category_desc") protected String category_desc; public void setCategory_desc(String value) { this.category_desc = value; } public String getCategory_desc(){ return this.category_desc; } @Column(name = "isparent", nullable=false) protected String isparent; public void setIsparent(String value) { this.isparent = value; } public String getIsparent(){ return this.isparent; } /*@Column(name = "parentcat_id", nullable=false) protected Long parentcat_id; public void setParentcat_id(Long value) { this.parentcat_id = value; } public Long getParentcat_id(){ return this.parentcat_id; } */ @javax.persistence.ManyToOne @JoinColumn(name ="parentcat_id", nullable=true) Prodcat_main prodcat_main; public void setProdcat_main(Prodcat_main value) { this.prodcat_main= value; } public Prodcat_main getProdcat_main(){ return this.prodcat_main; } }
package zkadsmine.prodcat_main.base; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.HashMap; import java.util.Map; import javax.annotation.PostConstruct; import javax.annotation.Resource; import zkadsmine.prodcat_main.base.Prodcat_main; import org.zkoss.lang.Strings; import org.zkoss.spring.context.annotation.AfterCompose; import org.zkoss.spring.context.annotation.EventHandler; import org.zkoss.spring.jpa.EntityNotFoundException; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Desktop; import org.zkoss.zk.ui.Page; import org.zkoss.zk.ui.event.ClientInfoEvent; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.KeyEvent; import org.zkoss.zk.ui.event.SelectEvent; import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zkplus.databind.BindingListModel; import org.zkoss.zkplus.databind.DataBinder; /* */ import org.zkoss.zul.Button; import org.zkoss.zul.Checkbox; import org.zkoss.zul.Datebox; import org.zkoss.zul.FieldComparator; import org.zkoss.zul.Intbox; import org.zkoss.zul.Timebox; import org.zkoss.zul.Listbox; import org.zkoss.zul.Listheader; import org.zkoss.zul.Listitem; import org.zkoss.zul.Messagebox; import org.zkoss.zul.Paging; import org.zkoss.zul.Spinner; import org.zkoss.zul.Textbox; import org.zkoss.zul.Window; import org.zkoss.zul.Decimalbox; import org.zkoss.zul.event.PageSizeEvent; import org.zkoss.zul.event.PagingEvent; public abstract class Prodcat_mainControllerBase { /****** Field Edit Components *******/ @Resource protected Intbox category_id; @Resource protected Textbox category_desc; @Resource protected Textbox isparent; @Resource protected Listbox parentcat_id; /****** Zul Specific Application Control *******/ //main control window @Resource protected Window prodcat_mainWin; //main window @Resource protected Listbox prodcat_mainDataListView; //domain object summary list @Resource protected Paging prodcat_mainPaging; //paging control for summary list @Resource protected Component prodcat_mainDetail; //domain object detail @Resource protected Component prodcat_mainEdit; //edit panel //buttons @Resource protected Button prodcat_mainCreate; //new button @Resource protected Button prodcat_mainUpdate; //edit button @Resource protected Button prodcat_mainDelete; //delete button @Resource protected Button prodcat_mainSave; //save button @Resource protected Button prodcat_mainCancel; //cancel button /****** Bean Field Edit Components *******/ protected Prodcat_main _tmpSelected; //store original selected entity /****** Controller state Fields *******/ //ZK databinder protected DataBinder binder; //Prodcat_main Model @Resource protected Prodcat_mainModelBase prodcat_mainModel = null; //operation transient state protected boolean _create; //when new a entity protected boolean _editMode; //switch to edit mode when doing editing(new/update) protected int _lastSelectedIndex = -1; //last selectedIndex before delete protected boolean _supportPaging = true; //switch to use Paging protected boolean _supportFilter = true; //TODO: switch to use Filter protected String _filter; //filters public Prodcat_mainControllerBase(){} @AfterCompose public void afterCompose() { //initial to read one record so binder.loadAll() will not trigger unnecessary SQL //The prodcat_mainWin.onClientInfo will load correct lines if (isSupportPaging()) { prodcat_mainModel.setMaxResults(1); } binder = new AnnotateDataBinder(prodcat_mainWin); prodcat_mainWin.setVariable("prodcat_mainBinder", binder, true); binder.loadAll(); final List model = (List) prodcat_mainDataListView.getModel(); if (!model.isEmpty()) { prodcat_mainModel.setSelected((Prodcat_main)model.get(0)); binder.loadComponent(prodcat_mainDetail); } setFocus(); } public boolean isSupportPaging() { return _supportPaging; } public boolean isSupportFilter() { return _supportFilter; } public boolean isSupportExtra() { return isSupportFilter() || isSupportPaging(); } public void setFilter(String filter) { _filter = filter; } public String getFilter() { return _filter; } @Resource protected Button prodcat_mainQuery; @EventHandler("prodcat_mainQuery.onClick") public void doFilter(){ if (Strings.isBlank(_filter)) { prodcat_mainModel.setWhere(null); prodcat_mainModel.setParameters(null); } else { //TODO:shall process filter string into JPQL where statement here prepareQueryConditions(); } refreshModel(); } protected void prepareQueryConditions(){ prodcat_mainModel.setWhere(" category_desc LIKE :category_desc OR isparent LIKE :isparent"); final Map params = new HashMap(); params.put("category_desc", "%"+_filter+"%"); params.put("isparent", "%"+_filter+"%"); prodcat_mainModel.setParameters(params); } public Prodcat_mainModelBase getModel() { return prodcat_mainModel; } public void setModel(Prodcat_mainModelBase prodcat_mainModel) { this.prodcat_mainModel = prodcat_mainModel; } public void refreshModel() { binder.loadAttribute(prodcat_mainDataListView, "model"); //reload model to force refresh } //-- view/edit mode --// public void setEditMode(boolean b) { _editMode = b; switchMode(); } public boolean isViewMode() { return !_editMode; } public boolean isEditMode() { return _editMode; } public boolean isCreate() { return _create; } public boolean isNotSelected() { return this.prodcat_mainModel.getSelected() == null; } private void switchMode() { binder.loadComponent(prodcat_mainDetail); //reload visible to force refresh setFocus(); } private void setFocus() { //post event so doSetFocus after the listbox is loaded ready Events.postEvent(new Event("onSetFocus", prodcat_mainWin)); } @EventHandler("prodcat_mainWin.onSetFocus") public void doSetFocus() { if (_editMode) { category_id.focus(); } else { if (((List)prodcat_mainDataListView.getModel()).isEmpty()) { //no result in list, focus on new button prodcat_mainCreate.focus(); } else { if (_create) { prodcat_mainCreate.focus(); } else { setListFocus(); } } } } private void setListFocus() { final Listitem li = prodcat_mainDataListView.getSelectedItem(); if (li != null) { li.focus(); } else { if (prodcat_mainModel.getSelected() != null) { prodcat_mainCreate.focus(); } else { prodcat_mainCreate.focus(); } } } @EventHandler("prodcat_mainWin.onOK") public void doOK(Event event) { if (isEditMode()) { doSave(event); } else { doUpdate(event); } } @EventHandler("prodcat_mainWin.onClientInfo") public void doClientInfo(Event event) { if (isSupportPaging()) { final ClientInfoEvent evt = (ClientInfoEvent) event; int height = evt.getDesktopHeight(); int pageSize = Math.max((height - 130) / 14, 10); //estimated page size, at least 10 int currentPageSize = prodcat_mainModel.getMaxResults(); if (currentPageSize != pageSize) { prodcat_mainModel.setMaxResults(pageSize); final int inviewIndex = prodcat_mainDataListView.getSelectedIndex() < 0 ? prodcat_mainModel.getOffset() : (prodcat_mainModel.getOffset() + prodcat_mainDataListView.getSelectedIndex()); final int activePage = inviewIndex / pageSize; //new active page final int offset = activePage * pageSize; prodcat_mainModel.setOffset(offset); refreshModel(); prodcat_mainPaging.setPageSize(pageSize); prodcat_mainPaging.setActivePage(activePage); setFocus(); } } } @EventHandler("prodcat_mainPaging.onPaging") public void doPaging(Event event) { if (isSupportPaging()) { final int activePage = prodcat_mainPaging.getActivePage(); final int offset = activePage * prodcat_mainPaging.getPageSize(); prodcat_mainModel.setOffset(offset); refreshModel(); setFocus(); } } //-- prodcat_mainDataListView control --// @EventHandler("prodcat_mainDataListView.onSelect") public void doSelect(Event event) { final int index = prodcat_mainDataListView.getSelectedIndex(); if (index >= 0) { _lastSelectedIndex = index; _create = false; } } //-- view mode control --// @EventHandler("prodcat_mainWin.onCtrlKey") public void doCtrlKey(Event event) { final List items = prodcat_mainDataListView.getItems(); if (!items.isEmpty() && (!_editMode || !_create)) { final int keycode = ((KeyEvent) event).getKeyCode(); if (keycode == KeyEvent.DOWN || keycode == KeyEvent.UP){ //handle no selected item case if (prodcat_mainDataListView.getSelectedIndex() < 0) { //no selected item //try our best to guess one if (_lastSelectedIndex >= 0) { final int index = Math.min(items.size() - 1, _lastSelectedIndex); prodcat_mainDataListView.setSelectedIndex(index); Events.sendEvent(new SelectEvent("onSelect", prodcat_mainDataListView, prodcat_mainDataListView.getSelectedItems())); } } setListFocus(); } } } @EventHandler("prodcat_mainCreate.onClick") public void doCreate(Event event) { if (isViewMode()) { //prepare a new Prodcat_main _tmpSelected = prodcat_mainModel.getSelected(); _create = true; prodcat_mainModel.setSelected(new Prodcat_main()); //switch to edit mode setEditMode(true); } } @EventHandler("prodcat_mainUpdate.onClick") public void doUpdate(Event event) { if (isViewMode()) { if (prodcat_mainModel.getSelected() != null) { _create = false; //switch to edit mode setEditMode(true); } } } @EventHandler("prodcat_mainDelete.onClick") public void doDelete(Event event) { if (isViewMode()) { if (prodcat_mainModel.getSelected() != null) { _create = false; newConfirmDelete().show(); } } } @EventHandler("prodcat_mainDelete.onDeleteYes") public void doDeleteYes(Event event) { if (isViewMode()) { beforeDelete(); try { prodcat_mainModel.delete(); prodcat_mainCreate.focus(); } catch (EntityNotFoundException e) { //ignore, already deleted by others } prodcat_mainModel.setSelected(null); //refresh the todoList refreshModel(); //update the prodcat_mainDetail switchMode(); } } //-- sorting --// public void doSort(Event event) { final Listheader lh = (Listheader) event.getTarget(); final String sortDirection = lh.getSortDirection(); //original direction if ("ascending".equals(sortDirection)) { final Comparator cmpr = lh.getSortDescending(); if (cmpr instanceof FieldComparator) { final String orderBy = ((FieldComparator)cmpr).getOrderBy(); prodcat_mainModel.setOrderBy(orderBy); //update query string } } else if ("descending".equals(sortDirection) || "natural".equals(sortDirection) || Strings.isBlank(sortDirection)) { final Comparator cmpr = lh.getSortAscending(); if (cmpr instanceof FieldComparator) { final String orderBy = ((FieldComparator)cmpr).getOrderBy(); prodcat_mainModel.setOrderBy(orderBy); //update query string } } if (isSupportPaging()) { refreshModel(); } setFocus(); } //-- edit mode control --// @EventHandler("prodcat_mainSave.onClick") public void doSave(Event event) { if (isEditMode()) { //validate validate(); //save into prodcat_main binder.saveComponent(prodcat_mainEdit); //reload model to force refresh //store into db if (_create) { beforeCreate(); this.prodcat_mainModel.persist(); } else { beforeUpdate(); try { this.prodcat_mainModel.merge(); } catch (EntityNotFoundException e1) { try { Messagebox.show(getUpdateDeletedMessage()); } catch (InterruptedException e2) { //ignore } } } //refresh the todoList refreshModel(); //switch to view mode setEditMode(false); } } @EventHandler("prodcat_mainCancel.onClick,prodcat_mainWin.onCancel") public void doCancel(Event event) { if (isEditMode()) { //restore to original selected Prodcat_main if cancel from new if (_create) { prodcat_mainModel.setSelected(_tmpSelected); _tmpSelected = null; } //switch to view mode setEditMode(false); } } //--To be override--// /** Validate the input field */ protected void validate() { category_id.getValue(); isparent.getValue(); if(parentcat_id.getSelectedItem()==null){ parentcat_id.setSelectedIndex(0);} } /** The info message when end user trying to update a "deleted" entity. */ protected String getUpdateDeletedMessage() { return "Cannot find the selected item, might have been deleted by others."; } /** Get a instance of ConfirmDelete class */ protected ConfirmDelete newConfirmDelete() { return new ConfirmDelete(); } /** Delete Confirmation */ protected class ConfirmDelete { /** Show the ConfirmDelete Messagebox */ public void show() { try { Messagebox.show(getConfirmMessage(), getConfirmTitle(), Messagebox.YES+Messagebox.NO, Messagebox.EXCLAMATION, new org.zkoss.zk.ui.event.EventListener() { public void onEvent(Event event) { if ("onYes".equals(event.getName())) { doYes(); } } } ); } catch (InterruptedException ex) { //ignore } } /** Operation when end user click Yes button in confirm delete Messagebox*/ public void doYes() { //have to send Event to change the current IdSpace to "prodcat_mainWin" Events.sendEvent(new Event("onDeleteYes", prodcat_mainDelete)); } } protected String getConfirmMessage(){ return "Are you sure?"; } protected String getConfirmTitle(){ return "Are you sure you want to delete the selected item?"; } protected void beforeCreate(){ } protected void beforeUpdate(){ } protected void beforeDelete(){ } }
<?xml version="1.0" encoding="UTF-8"?> <zk xmlns="http://www.zkoss.org/2005/zul"> <window id="prodcat_mainWin" width="100%" height="100%" ctrlKeys="#up#down"> <borderlayout> <north size="60px"> <borderlayout> <center border="none" style="background-color:#B1CBD5"> <html><![CDATA[<h2 style="color:#0C7A9A;margin-left:10px">prodcat_main List Management</h2>]]></html></center> <east border="none" style="background-color:#B1CBD5"> <toolbarbutton src="img/zkpowered_s.png" href="http://www.zkoss.org"/></east> </borderlayout> </north> <west size="640px" splittable="true" flex="true"> <borderlayout id="beanSummary"><!-- ******************** Extra Control ******************** --> <north border="none" visible="@{prodcat_mainController.supportExtra}"> <div> <hbox visible="@{prodcat_mainController.supportFilter}">Filter: <textbox id="beanSearch" value="@{prodcat_mainController.filter}"/> <button id="prodcat_mainQuery" label="Query"/> </hbox> <paging id="prodcat_mainPaging" totalSize="@{prodcat_mainModel.totalSize}" visible="@{prodcat_mainController.supportPaging}"/> </div> </north> <center border="none" flex="true"><!-- ******************** List View of Table ******************** --> <listbox id="prodcat_mainDataListView" multiple="false" model="@{prodcat_mainModel.all}" selectedItem="@{prodcat_mainModel.selected}" style="border:none"> <listhead sizable="true"><!-- ******************** Generated By Bean Field Def ******************** --> <listheader id="category_idHeader" label="Category_id" /> <listheader id="category_descHeader" label="Category_desc" /> <listheader id="isparentHeader" label="Isparent" /> <listheader id="parentcat_idHeader" label="Parentcat_id" /> <listheader id="parentcat_descHeader" label="Parentcat_desc" /> </listhead> <listitem self="@{each=zx1}"><!-- ******************** Generated By Bean Field Def ******************** --> <listcell label="@{zx1.category_id}"/> <listcell label="@{zx1.category_desc}"/> <listcell label="@{zx1.isparent}"/> <listcell label="@{zx1.prodcat_main.category_id}"/> <listcell label="@{zx1.prodcat_main.category_desc}"/> </listitem> </listbox> </center> </borderlayout> </west> <center> <div id="prodcat_mainDetail"> <!-- ******************** view mode ******************** --> <div id="beanView" visible="@{prodcat_mainController.viewMode}" width="100%"> <grid width="100%" > <columns> <column align="right" width="117px"/> <column align="left"/> </columns> <rows><!-- ******************** Generated By Field Def ******************** --> <row>Category_id :<label value="@{prodcat_mainModel.selected.category_id}"/></row> <row>Category_desc :<label value="@{prodcat_mainModel.selected.category_desc}"/></row> <row>Isparent :<label value="@{prodcat_mainModel.selected.isparent}"/></row> <row>Parentcat_id :<label value="@{prodcat_mainModel.selected.prodcat_main.category_id}"/></row> <row>Parentcat_desc :<label value="@{prodcat_mainModel.selected.prodcat_main.category_desc}"/></row> </rows> </grid> <separator/> <div align="right"> <hbox> <button id="prodcat_mainCreate" label="New"/> <button id="prodcat_mainUpdate" label="Edit" disabled="@{prodcat_mainController.notSelected,load-when='prodcat_mainDataListView.onSelect'}"/> <button id="prodcat_mainDelete" label="Delete" disabled="@{prodcat_mainController.notSelected,load-when='prodcat_mainDataListView.onSelect'}"/> </hbox> </div> </div> <!-- ******************** edit mode ******************** --> <div id="prodcat_mainEdit" visible="@{prodcat_mainController.editMode}"> <grid width="100%" fixedLayout="true"> <columns> <column align="right" width="117px"/> <column align="left"/> </columns> <rows><!-- ******************** Generated By Field Def ******************** --> <row>Category_id :<intbox id="category_id" value="@{prodcat_mainModel.selected.category_id,save-when=none,access=load}" disabled="true" /></row> <row>Category_desc :<textbox id="category_desc" value="@{prodcat_mainModel.selected.category_desc,save-when=none}"/></row> <row>Isparent :<textbox id="isparent" constraint="no empty" value="@{prodcat_mainModel.selected.isparent,save-when=none}"/></row> <!-- <row>Parentcat_id :<intbox id="parentcat_id" constraint="no empty" value="@{prodcat_mainModel.selected.parentcat_id,save-when=none}" /></row>--> <row>Parentcat_id: <listbox id="Parentcat_id" mold="select" rows="1" model="@{prodcat_mainController.prodcat_mainModel.all}" selectedItem="@{prodcat_mainModel.selected.prodcat_main,save-when=none}"> </listbox> <zscript><![CDATA[ import zkadsmine.ui.ParentcatRenderer; Parentcat_id.setItemRenderer(new ParentcatRenderer()); ]]> </zscript> </row> </rows> </grid> <separator/> <div align="right"> <hbox> <button id="prodcat_mainSave" label="Save"/> <button id="prodcat_mainCancel" label="Cancel"/> </hbox> </div> </div> </div> </center> </borderlayout> </window> </zk>
Asked: 2010-04-01 01:55:27 +0800
Seen: 574 times
Last updated: Apr 03 '10