Class CollectionTemplate

  • All Implemented Interfaces:
    java.io.Serializable, org.zkoss.zk.ui.ext.DynamicPropertied

    public class CollectionTemplate
    extends java.lang.Object
    implements org.zkoss.zk.ui.ext.DynamicPropertied, java.io.Serializable
    A utility to let developers to apply shadow elements in Java class. It has the similar behavior with ForEach, for example, setModel(ListModel) corresponds to ForEach.setItems(Object) but only accept ListModel.

    One difference is that developers can specify the template name by setTemplate(String) or setTemplateURI(String), and it is more flexible to assign CollectionTemplateResolver which will resolve the proper Template by evaluating the variable reference from model in runtime.

    Besides, developers must designate a boolean value, called autodrop, to indicate whether to drop those rendered children or not. If true, every time developers changed template or detach from the original host, ShadowTemplate will HtmlShadowElement.recreate() or removed the children, otherwise, rendered children will remain on page.

    After instantiating CollectionTemplate instance and above configuration, developers can trigger apply(Component) to compose the specified template with shadow host passed as parameter. Note that, the passed host should be the same one if autodrop is true, or pass null to detach the original host first.

    Since:
    8.0.0
    Author:
    chunfu
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      CollectionTemplate​(boolean autodrop)
      Constructor needs a boolean value to indicate whether to detached all rendered children automatically or not when template or host is changed.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void apply​(org.zkoss.zk.ui.Component host)
      Compose the specified template with the given host.
      java.util.Map<java.lang.String,​java.lang.Object> getDynamicProperties()  
      java.lang.Object getDynamicProperty​(java.lang.String name)  
      org.zkoss.zul.ListModel getModel()  
      org.zkoss.zk.ui.Component getShadowHost()
      Return the current shadow host.
      java.lang.String getTemplate()
      Returns the template name
      java.lang.String getTemplateURI()  
      boolean hasDynamicProperty​(java.lang.String name)  
      void setDynamicProperty​(java.lang.String name, java.lang.Object value)  
      void setModel​(org.zkoss.zul.ListModel model)
      Accept model to render iteratively.
      void setTemplate​(java.lang.String template)
      Sets the template name to apply.
      void setTemplateResolver​(CollectionTemplateResolver templateResolver)
      Template resolver will resolve the proper Template by evaluating the variable reference from model.
      void setTemplateURI​(java.lang.String templateURI)
      Sets the template uri.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • CollectionTemplate

        public CollectionTemplate​(boolean autodrop)
        Constructor needs a boolean value to indicate whether to detached all rendered children automatically or not when template or host is changed.
        Parameters:
        autodrop - a boolean value
    • Method Detail

      • getShadowHost

        public org.zkoss.zk.ui.Component getShadowHost()
        Return the current shadow host.
        Returns:
        host component
      • setModel

        public void setModel​(org.zkoss.zul.ListModel model)
        Accept model to render iteratively.
        Parameters:
        model -
      • getModel

        public org.zkoss.zul.ListModel getModel()
      • setTemplateResolver

        public void setTemplateResolver​(CollectionTemplateResolver templateResolver)
        Template resolver will resolve the proper Template by evaluating the variable reference from model.
        Parameters:
        templateResolver -
      • getTemplate

        public java.lang.String getTemplate()
        Returns the template name
      • setTemplate

        public void setTemplate​(java.lang.String template)
        Sets the template name to apply.

        One cannot set both template and template URI at the same time. For example, setTemplate(String) after setTemplateURI(String), then only template uri takes charge of rendering.

        Parameters:
        template - the template name
      • setTemplateURI

        public void setTemplateURI​(java.lang.String templateURI)
        Sets the template uri.

        One cannot set both template and template URI at the same time. For example, setTemplate(String) after setTemplateURI(String), then only template uri takes charge of rendering.

        Parameters:
        templateURI - the template URI, like Apply.setTemplateURI(String).
      • getTemplateURI

        public java.lang.String getTemplateURI()
      • apply

        public void apply​(org.zkoss.zk.ui.Component host)
        Compose the specified template with the given host. Notice that,
        • If autodrop(the boolean value passed when instantiation) is true, users should apply to the same host every time, otherwise, apply null to detach the original host, and then apply to the new one.
        • If autodrop is false, don't have to consider this situation, users can apply to any host you want except null.
        Parameters:
        host - as known as shadow host mentioned in other shadow element
      • hasDynamicProperty

        public boolean hasDynamicProperty​(java.lang.String name)
        Specified by:
        hasDynamicProperty in interface org.zkoss.zk.ui.ext.DynamicPropertied
      • getDynamicProperty

        public java.lang.Object getDynamicProperty​(java.lang.String name)
        Specified by:
        getDynamicProperty in interface org.zkoss.zk.ui.ext.DynamicPropertied
      • getDynamicProperties

        public java.util.Map<java.lang.String,​java.lang.Object> getDynamicProperties()
        Specified by:
        getDynamicProperties in interface org.zkoss.zk.ui.ext.DynamicPropertied
      • setDynamicProperty

        public void setDynamicProperty​(java.lang.String name,
                                       java.lang.Object value)
                                throws org.zkoss.zk.ui.WrongValueException
        Specified by:
        setDynamicProperty in interface org.zkoss.zk.ui.ext.DynamicPropertied
        Throws:
        org.zkoss.zk.ui.WrongValueException