java - Adobe 体验管理器 6.2

标签 java xml jsp aem

有没有人有关于如何创建二维动态组件的最佳实践示例。例如,将 js 数据传输到表中,其中可以有 x 列和 y 行 - 具有动态输入类型,例如文本、数字、下拉菜单。

var comparisonTableCarouselJSON = {
  tableColumns: [
    {
      columnData: [
        {
           cellType: "label", 
           text: "Test 3",
           richText: "",
           tickBox: "",
        },
      ]
    },
    {
      columnData: [
        {
          cellType: "label", 
          text: "Test 3",
          richText: "",
          tickBox: "",
        },
      ]
    },
    {
      columnData: [
        {
          cellType: "label", 
          text: "Test 3",
          richText: "",
          tickBox: "",
        },
      ]
    }
  ]
}

最佳答案

从评论中我了解到您希望使用 AEM 作为 headless CMS 和 React head。

方法 1:将 AEM 打造成 headless CMS 的推荐方法是 use content fragments 。您需要启用 RTE Plugins在片段中。然后创建一个片段并创作表内容。然后使用ComponentExporter model.json 可以导出并由 React head 使用。

方法 2: 创建一个扩展 aem core text component 的表格组件。 aemcore 文本具有所有需要的插件,因此您的自定义组件基本上是空白的。 aemcore 使用Text Model它扩展了 ComponentExporter。因此,您可以通过点击 */_jcr_content/*/table.model.json 来使用表格内容。这又很容易,因为涉及的编码非常少。

开发中的困难部分: 上述两种方法都使用ComponentExporter,在jackson的帮助下盲目导出jcr内容。 RTE 的表格插件将内容保存为 html。这意味着,生成的 *.model.json 将是一个 html 字符串。例如这样:

{"text": "<table><tbody><tr><th>Hello</th><th>World</th></tr></tbody></table>"}

在React端,您需要渲染为innerHtml或在React端使用HTML解析器,以您需要的格式解析内容。 为了避免在 FE 处进行innerHtml/解析,您需要构建一个类似于 core Text 的自定义 Sling 模型。扩展了 ComponentExporter。使用HTMLParser like Jsoup将 HTML 字符串解析为 DOM 对象。根据您所需的 json 格式,拥有一个包含所需字段的 TableDTO。最后将 DOMElement 从 jsoup 解析器映射到 TableDTO。 ComponentExporter 应导出自定义 TableDTO。这样你就会得到一个从 *.model.json 导出的整洁的 json

关于java - Adobe 体验管理器 6.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60498288/

相关文章:

java - 查找总和达到给定总和的最小子数组(允许重复)

java - Oracle 通用连接池 (UCP) 有多好

java - 您可以从 JAX-WS @WebMethod 返回一个数组吗?

xml - 将 resx 转换为 XLIFF 格式失败

php - 使用 mysql 和 php 创建 xml 文件。想要添加自定义行

java - 在tomcat中运行jsp文件出错?

java - 未使用过滤器和 ByteArrayOutputStream 写入响应

java - 在 Activity 的JRE中找不到tools.jar-Spring Tools Suite

java - 为什么 fn 是 :escapeXml() adding square brackets to String

xml - 如何使用 xsl-fo 防止文本越过前后区域?