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

Pagination using content fragment list component

Avatar

Level 4

Hi All,

 

Any suggestion on how we can implement the pagination logic using the core content fragment list component.

 

May be extending com.adobe.cq.wcm.core.components.models.contentfragment.ContentFragmentList class but not sure if we can do that.

 

Thanks in advance.

Topics

Topics help categorize Community content and increase your ability to discover relevant content.

1 Accepted Solution

Avatar

Correct answer by
Level 10

Hello @ashishkhadpe,

The quick answer is no, you can't extend com.adobe.cq.wcm.core.components.models.contentfragment.ContentFragmentList, for two reasons:

  1. It's an interface (which allows extension, but that yon't help you implement pagination)
  2. The actual implementation, com.adobe.cq.wcm.core.components.internal.models.v1.contentfragment.ContentFragmentListImpl, is not exported in OSGi, so if you extend it and deploy your bundle, you'll get a dependency error.

If you want to "extend" the behavior of the you'll have to use the Delegation Pattern. You can find a tutorial explaining this pattern in AEM here. If you are using Lombok (and I think you should), you can use their @Delegate annotation to reduce on boilerplate code.

However, I assume that you are thinking of pagination as a front-end process (ie: no need to reload the entire page when you go from page 1 to page 2)? In that case, you'll have to implement the pagination logic in JS (using a web component for example, I recommend https://open-wc.org/). Then create a Sling Servletor Model that you can call to get X results at a time. 

Hope this helps! 

View solution in original post

1 Reply

Avatar

Correct answer by
Level 10

Hello @ashishkhadpe,

The quick answer is no, you can't extend com.adobe.cq.wcm.core.components.models.contentfragment.ContentFragmentList, for two reasons:

  1. It's an interface (which allows extension, but that yon't help you implement pagination)
  2. The actual implementation, com.adobe.cq.wcm.core.components.internal.models.v1.contentfragment.ContentFragmentListImpl, is not exported in OSGi, so if you extend it and deploy your bundle, you'll get a dependency error.

If you want to "extend" the behavior of the you'll have to use the Delegation Pattern. You can find a tutorial explaining this pattern in AEM here. If you are using Lombok (and I think you should), you can use their @Delegate annotation to reduce on boilerplate code.

However, I assume that you are thinking of pagination as a front-end process (ie: no need to reload the entire page when you go from page 1 to page 2)? In that case, you'll have to implement the pagination logic in JS (using a web component for example, I recommend https://open-wc.org/). Then create a Sling Servletor Model that you can call to get X results at a time. 

Hope this helps!