loading table of contents...

4.3.5.3. Metadata Support in JSP Templates

If you want to add metadata to an HTML document from within a JSP template, include the JSP tag cm:previewScripts in a template that is called once for each HTML page. You can then use the tag cm:metadata each time metadata is to be assigned to an HTML DOM node.

The tag cm:metadata checks whether metadata rendering is enabled (either globally or locally for this tag occurrence). If enabled, the given metadata is serialized as a JSON string. In the rendered document, this string is escaped accordingly and output as the value of the custom HTML attribute data-cm-metadata of the HTML element that the metadata is attached to.

Example:

<cm:metadata value="${self.content}" />

To allow assigning multiple metadata nodes to the same DOM node, multiple nested cm:object tags have to be used instead of the value attribute. cm:object has only a value attribute and is used for list elements.

<cm:metadata>
  <cm:object value="${self.content}"/>
  <cm:object value="properties.title"/>
</cm:metadata>

Example 4.13. Content With Property


The tag cm:property can be nested into cm:metadata, cm:object or cm:property to create a name-value pair. Again, the value can be specified either as an attribute or through nested tags.

<cm:metadata>
  <cm:property name="cm_preferredWidth" value="1280"/>
  <cm:property name="cm_responsiveDevices">
    ...
    <cm:property name="mobile_portrait">
      <cm:property name="width" value="320"/>
      <cm:property name="height" value="480"/>
      <cm:property name="isDefault" value="${true}"/>
      <cm:property name="order" value="1"/>
    </cm:property>
  </cm:property>
</cm:metadata>

Example 4.14. Responsive Device Slider Metadata