-
Bug
-
Resolution: Fixed
-
Critical
-
None
-
None
-
None
Found the error:
java.lang.IllegalStateException: UI can not be modified in the rendering phase
When closed the tab containing bind to include
Example
file: tab_error.zul
<zk xmlns:h="http://www.w3.org/1999/xhtml">
<borderlayout width="100%" height="100%" style="padding: 0px" apply="virtualcode.web.base.TabErrorController">
<west width="200px" splittable="true" collapsible="true">
<vlayout spacing="0" height="100%" style="overflow:auto">
<panel title="menu">
<panelchildren>
<vbox>
<toolbarbutton id="btnPerson" label="person" />
</vbox>
</panelchildren>
</panel>
</vlayout>
</west>
<east width="18%" splittable="true" visible="false" />
<center>
<tabbox id="tabMain" width="100%" height="100%">
<tabs>
</tabs>
<tabpanels>
</tabpanels>
</tabbox>
</center>
</borderlayout>
</zk>
file: TabErrorComposer
package virtualcode.web.base;
import java.util.ArrayList;
import java.util.List;
import org.zkoss.bind.BindComposer;
import org.zkoss.bind.annotation.Command;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.util.ConventionWires;
import org.zkoss.zul.Include;
import org.zkoss.zul.Tab;
import org.zkoss.zul.Tabbox;
import org.zkoss.zul.Tabpanel;
import org.zkoss.zul.Toolbarbutton;
public class TabErrorController extends BindComposer<Component> {
private static final long serialVersionUID = -4450762302282471893L;
private Tabbox tabMain;
private Toolbarbutton btnPerson;
private List<String> persons;
public TabErrorController()
{ super(); this.persons = new ArrayList<String>(); this.persons.add("Mike"); this.persons.add("Jonny"); } @Override
public void doAfterCompose(Component comp) throws Exception
public void addTab()
{ Tab tab = new Tab(); tab.setClosable(true); tab.setSelected(true); tab.setLabel("person"); Include inc = new Include("/seguro/tabs/person.zul"); inc.setProgressing(true); inc.setWidth("100%"); inc.setHeight("100%"); Tabpanel tabpan = new Tabpanel(); tabpan.appendChild(inc); tabMain.getTabs().appendChild(tab); tabMain.getTabpanels().appendChild(tabpan); }public List<String> getPersons()
{ return persons; } private class OnClickMenuIten implements EventListener<Event> {
public void onEvent(Event event) throws Exception
}
}
file: person.zul
<zk>
<zscript><![CDATA[
class PersonComposer extends org.zkoss.bind.BindComposer {
private String selected = null;
private String[] persons = new String[]
;
public String getSelected()
{ return this.selected; }
public void setSelected(String selected)
{ this.selected = selected; }public String[] getPersons()
{ return persons; } }
]]>
</zscript>
<window id="win" apply="PersonComposer" border="none" >
<listbox id="lbx" vflex="true" model="@load(win$composer.persons)"
selectedItem="@save(win$composer.selected)">
<listhead>
<listheader label="name" width="100%"/>
</listhead>
<template name="model">
<listitem >
<listcell label="@bind(each)" />
</listitem>
</template>
</listbox>
<window title="Person">
<label value="Name" />
<textbox value="@bind(win$composer.selected)" width="90%"/>
</window>
</window>
</zk>
Error:
25/05/2012 09:58:42 org.zkoss.zk.ui.util.Configuration afterPageDetached:1125
SEVERE: Failed to invoke org.zkoss.bind.tracker.impl.BindUiLifeCycle@132c800
java.lang.IllegalStateException: UI can't be modified in the rendering phase
at org.zkoss.zk.ui.impl.UiVisualizer.getAttrRespMap(UiVisualizer.java:299)
at org.zkoss.zk.ui.impl.UiVisualizer.addSmartUpdate0(UiVisualizer.java:254)
at org.zkoss.zk.ui.impl.UiVisualizer.addSmartUpdate(UiVisualizer.java:238)
at org.zkoss.zk.ui.impl.UiEngineImpl.addSmartUpdate(UiEngineImpl.java:280)
at org.zkoss.zk.ui.AbstractComponent.smartUpdate(AbstractComponent.java:1579)
at org.zkoss.zk.ui.AbstractComponent.smartUpdate(AbstractComponent.java:1554)
at org.zkoss.zk.ui.AbstractComponent.removeEventListener(AbstractComponent.java:2151)
at org.zkoss.bind.impl.BinderImpl.removeEventCommandListenerIfExists(BinderImpl.java:1141)
at org.zkoss.bind.impl.BinderImpl.removeBindings(BinderImpl.java:1744)
at org.zkoss.bind.impl.BinderImpl.removeBindings(BinderImpl.java:1714)
at org.zkoss.bind.tracker.impl.BindUiLifeCycle.removeBindings0(BindUiLifeCycle.java:114)
at org.zkoss.bind.tracker.impl.BindUiLifeCycle.removeBindings(BindUiLifeCycle.java:97)
at org.zkoss.bind.tracker.impl.BindUiLifeCycle.removeBindings(BindUiLifeCycle.java:101)
at org.zkoss.bind.tracker.impl.BindUiLifeCycle.afterPageDetached(BindUiLifeCycle.java:93)
at org.zkoss.zk.ui.util.Configuration.afterPageDetached(Configuration.java:1123)
at org.zkoss.zk.ui.impl.DesktopImpl.removePage(DesktopImpl.java:812)
at org.zkoss.zk.ui.impl.UiVisualizer.getResponses(UiVisualizer.java:621)
at org.zkoss.zk.ui.impl.UiEngineImpl.getResponses(UiEngineImpl.java:1408)
at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1220)
at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:558)
at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:456)
at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:464)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:594)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1366)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1337)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1337)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1337)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:484)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:413)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)
at org.eclipse.jetty.server.Server.handle(Server.java:351)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:634)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:609)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:45)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534)
at java.lang.Thread.run(Thread.java:619)