Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

Get ParagraphSystem of a resource inside another resource

Avatar

Level 3

Hi,

I'm need to read a text that is on a parsys inside a text component.

I have a page that shows a list of news, this page has a resourceType list-news, for example.

each one of my news has a resource type "News".

When I am on my list-news reading each one of my content new, and I do a hit.getResourceType, I am getting the resourceType of my "list-news" item,

How can I get the parsys, of my item that has another resource type???

I can't find a similar case on the internet

I am using this:

for (Hit hit : result.getHits()) {

        if(null != hit.getProperties() ) {

           SlingHttpServletRequest slingReq = getRequest();

           ParagraphSystem parSys = ParagraphSystem.create(hit.getResource(), slingRequest);

          

           for (Paragraph par: parSys.paragraphs()) {

                   String myType = par.getType().toString() ;

               }

} }

1 Accepted Solution

Avatar

Correct answer by
Level 10

That is a strange requirement - never really heard of that one before. Not sure why you need to read text that is part of another component.

Anyhow - Text is simply node property typically under a par node.

For example - assume we put text on page like this:

Test.png

OK - now we can access this in the JCR Here:

/content/AEMWatchFolder/en/jcr:content/par/text_1816859244

Look at the text prop:

Test2.png

You can access HTML by reading node props like that.

View solution in original post

3 Replies

Avatar

Level 4

get a Resource Iterator from result and work on resource thereafter.

Iterator<Resource> itr = result.getResources();

while (itr.hasNext()) {

Resource resource = itr.next();

....

}

Iterate the resource and use resource.listChildren() to get all its sub nodes.

Avatar

Level 3

Hi Riman,

Thank you for your reply.

But I had tried a lot of things, but I am not able to retrieve the content. I want to retrieve the text that is created inside the parsys.

Does anyone had already done that?

I am trying a lot of things and I can go to the "par" node, but I can't read the text inside of it:

Things that I am trying:

ParagraphSystem parSys = ParagraphSystem.create(res, slingRequest);

          

           for (Paragraph par: parSys.paragraphs()) {

                   String myType = par.getType().toString() ;

                   Resource resPar = par.getResource();

                   String type = resPar.getName();

                  

                   ResourceResolver  resourceResolverText = resPar.getResourceResolver();

                   Resource resText = resourceResolverText.getResource(resPar.getPath());

                   ValueMap valueMap = resText.getValueMap();

                   String texto = valueMap.get("Text", String.class);

Thank you!

Avatar

Correct answer by
Level 10

That is a strange requirement - never really heard of that one before. Not sure why you need to read text that is part of another component.

Anyhow - Text is simply node property typically under a par node.

For example - assume we put text on page like this:

Test.png

OK - now we can access this in the JCR Here:

/content/AEMWatchFolder/en/jcr:content/par/text_1816859244

Look at the text prop:

Test2.png

You can access HTML by reading node props like that.