Expand my Community achievements bar.

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.