如何获取textimage组件中的各个paraformat值?

时间:2016-10-20 20:24:28

标签: aem

我正在使用textimage组件并添加&#34; paraformat&#34;在rteplugins。 当我在对话框中提供值时,它将保存为属性&#34; text&#34;:<h1>heading1</h1><h2>Heading2</h2><h3>Heading3</h3><p>Paragraph</p>

现在,我想获得个人价值,例如。在这种情况下,heading1,heading2等。

我可以应用一些字符串函数。但是,有没有人知道获得这些价值的任何直接方法?

1 个答案:

答案 0 :(得分:0)

在这里你使用文本组件示例希望同样有帮助(因为不建议用正则表达式解析HTML,但是你可以在回答下面给出一些想法)

使用rtePlugins创建一个组件,如下所示 rtetextcomp text.jsp代码

<%@page session="false"%>
<%@ page import="com.day.cq.wcm.foundation.Placeholder,java.util.regex.Matcher,java.util.regex.Pattern" %>
<%@include file="/libs/foundation/global.jsp"%><%
%><cq:text property="text" escapeXml="true"
        placeholder="<%= Placeholder.getDefaultPlaceholder(slingRequest, component, null)%>"/>

<!-- Below code to demonstrate the Retrieval of paraformat -->
<%  String defaultMessage = properties.get("text", "");

    // the pattern we want to search for
    Pattern p = Pattern.compile("<p>(.*?)</p>");
    Pattern h1 = Pattern.compile("<h1>(.*?)</h1>");
    Pattern h2 = Pattern.compile("<h2>(.*?)</h2>");
    Pattern h3 = Pattern.compile("<h3>(.*?)</h3>");
    Matcher mp = p.matcher(defaultMessage);
    Matcher mh1 = h1.matcher(defaultMessage);
    Matcher mh2 = h2.matcher(defaultMessage);
    Matcher mh3 = h3.matcher(defaultMessage);

// if we find a match, get the group 
    if (mp.find()) {

      // get the matching group
          String parastring = mp.group(1);

      // print the group
        out.println("tag P : "+parastring +"</br>");
    }
 if (mh1.find()) {

      // get the matching group
          String h1string = mh1.group(1);

      // print the group
         out.println("tag h1 : "+h1string +"</br>");
    }
    if (mh2.find()) {
// get the matching group
          String h2string = mh2.group(1);

      // print the group
         out.println("tag h2 : "+h2string +"</br>");
    }
     if (mh3.find()) {

      // get the matching group
          String h3string = mh3.group(1);

      // print the group
         out.println("tag h3 : "+h3string +"</br>");
    }
      %>

将组件拖放到页面中并编辑rte rteedit

最后在页面中,您可以使用jsp代码中显示的java.util.regex.*;包来检索文本(这不是为了了解如何满足您正在寻找的要求而进行的优化)。 tags code