Uploaded image for project: 'ZK'
  1. ZK
  2. ZK-1160

Error when closing tab with include

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • 6.0.2
    • 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

      { super.doAfterCompose(comp); ConventionWires.wireVariables(comp, this); btnPerson.addEventListener(Events.ON_CLICK, new OnClickMenuIten()); }

      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

      { addTab(); }


      }

      }

      file: person.zul
      <zk>
      <zscript><![CDATA[
      class PersonComposer extends org.zkoss.bind.BindComposer {
      private String selected = null;
      private String[] persons = new String[]

      {"Mike","Jonhy"}

      ;

      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)

        1. error.txt
          7 kB
        2. person.zul
          1.0 kB
        3. tab_error.zul
          0.8 kB
        4. TabErrorController.java
          2 kB

            neillee neillee
            leandrogehlen leandrogehlen
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: