package org.thymeleaf.dialect.springdata; import org.thymeleaf.context.ITemplateContext; import org.thymeleaf.dialect.springdata.decorator.PaginationDecorator; import org.thymeleaf.dialect.springdata.decorator.PaginationDecoratorRegistry; import org.thymeleaf.dialect.springdata.util.Strings; import org.thymeleaf.engine.AttributeName; import org.thymeleaf.model.IProcessableElementTag; import org.thymeleaf.processor.element.AbstractAttributeTagProcessor; import org.thymeleaf.processor.element.IElementTagStructureHandler; import org.thymeleaf.templatemode.TemplateMode; final class PaginationAttrProcessor extends AbstractAttributeTagProcessor { private static final String PAGINATION = "pagination"; public static final int PRECEDENCE = 1000; public PaginationAttrProcessor(final String dialectPrefix) { super(TemplateMode.HTML, dialectPrefix, null, false, PAGINATION, true, PRECEDENCE, true); } @Override protected void doProcess(ITemplateContext context, IProcessableElementTag tag, AttributeName attributeName, String attributeValue, IElementTagStructureHandler structureHandler) { String attrValue = String.valueOf(attributeValue).trim(); PaginationDecorator decorator = PaginationDecoratorRegistry.getInstance().getDecorator(attrValue); String html = decorator.decorate(tag, context); boolean isUlNode = Strings.UL.equalsIgnoreCase(tag.getElementCompleteName()); if (isUlNode) { structureHandler.replaceWith(html, false); } else { structureHandler.setBody(html, false); } } }