Class CollectionTemplate
- java.lang.Object
-
- org.zkoss.zuti.zul.CollectionTemplate
-
- All Implemented Interfaces:
java.io.Serializable
,DynamicPropertied
public class CollectionTemplate extends java.lang.Object implements DynamicPropertied, java.io.Serializable
A utility to let developers to apply shadow elements in Java class. It has the similar behavior withForEach
, for example,setModel(ListModel)
corresponds toForEach.setItems(Object)
but only acceptListModel
.One difference is that developers can specify the template name by
setTemplate(String)
orsetTemplateURI(String)
, and it is more flexible to assignCollectionTemplateResolver
which will resolve the properTemplate
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(Component host)
Compose the specified template with the given host.java.util.Map<java.lang.String,java.lang.Object>
getDynamicProperties()
Returns all available dynamic properties.java.lang.Object
getDynamicProperty(java.lang.String name)
Returns the property value of the specified name.ListModel
getModel()
Component
getShadowHost()
Return the current shadow host.java.lang.String
getTemplate()
Returns the template namejava.lang.String
getTemplateURI()
boolean
hasDynamicProperty(java.lang.String name)
Returns whether a dynamic property is defined.void
setDynamicProperty(java.lang.String name, java.lang.Object value)
Sets a property with the specified name and value.void
setModel(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 properTemplate
by evaluating the variable reference from model.void
setTemplateURI(java.lang.String templateURI)
Sets the template uri.
-
-
-
Method Detail
-
getShadowHost
public Component getShadowHost()
Return the current shadow host.- Returns:
- host component
-
setModel
public void setModel(ListModel model)
Accept model to render iteratively.- Parameters:
model
-
-
getModel
public ListModel getModel()
-
setTemplateResolver
public void setTemplateResolver(CollectionTemplateResolver templateResolver)
Template resolver will resolve the properTemplate
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)
aftersetTemplateURI(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)
aftersetTemplateURI(String)
, then only template uri takes charge of rendering.- Parameters:
templateURI
- the template URI, likeApply.setTemplateURI(String)
.
-
getTemplateURI
public java.lang.String getTemplateURI()
-
apply
public void apply(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)
Description copied from interface:DynamicPropertied
Returns whether a dynamic property is defined.- Specified by:
hasDynamicProperty
in interfaceDynamicPropertied
-
getDynamicProperty
public java.lang.Object getDynamicProperty(java.lang.String name)
Description copied from interface:DynamicPropertied
Returns the property value of the specified name.- Specified by:
getDynamicProperty
in interfaceDynamicPropertied
-
getDynamicProperties
public java.util.Map<java.lang.String,java.lang.Object> getDynamicProperties()
Description copied from interface:DynamicPropertied
Returns all available dynamic properties.- Specified by:
getDynamicProperties
in interfaceDynamicPropertied
-
setDynamicProperty
public void setDynamicProperty(java.lang.String name, java.lang.Object value) throws WrongValueException
Description copied from interface:DynamicPropertied
Sets a property with the specified name and value.If a component supports only String-type values, it could use org.zkoss.lang.Objects.toString() to convert the value to a String instance.
- Specified by:
setDynamicProperty
in interfaceDynamicPropertied
- Throws:
WrongValueException
-
-