Como implementar um RewriterTransformerFactory personalizado

Problema

Os links nas tags "IMG" e "FORM" não são reescritos (em contraste com os links nas tags "A")

Resolução

Para aprimorar o pipeline de reescrita, implemente um RewriterTransformerFactory [1] personalizado. Este é um componente opcional usado para ampliar o mecanismo de reescrita existente. Esse RewriterTransformerFactory deve fornecer uma implementação do Transformer [2] através da qual o html a ser reescrito passa como eventos SAX. Para facilitar a implementação de transformadores de reescrita personalizados, uma classe AbstractContentHandler [3] está disponível para extensão, que fornece implementações padrão de métodos especificados pela interface org.xml.sax.ContentHandler.

Um exemplo de esqueleto poderia ser assim:

package x.y.z;
import com.day.cq.rewriter.pipeline.AbstractContentHandler;
import com.day.cq.rewriter.pipeline.RewriterTransformerFactory;
import com.day.cq.rewriter.pipeline.Transformer;
/*
*
* @scr.component metatype="no"
* @scr.service
* @scr.property name="service.ranking" value="-100" type="Integer"
*/
public class MyRewriterTransformer extends AbstractContentHandler
               implements RewriterTransformerFactory, Transformer {

  // override startElement method
  public void startElement(String uri, String loc, String raw, Attributes a)
               throws SAXException {

      // implement your custom link rewriting here
  }

  public Transformer createTransformer() {
      return new MyRewriterTransformer();
  }
}

Note que o valor da classificação do serviço influencia a ordem de acionamento do transformador de reescrita. Veja [1] para mais detalhes sobre isso.

Aplica-se a

CQ 5.2.x

[1] http://dev.day.com/content/docs/v5_2/cq-wcm-javadoc/index.html?com/day/cq/rewriter/pipeline/RewriterTransformerFactory.html


[2] http://dev.day.com/content/docs/v5_2/cq-wcm-javadoc/index.html?com/day/cq/rewriter/pipeline/Transformer.html


[3] http://dev.day.com/content/docs/v5_2/cq-wcm-javadoc/index.html?com/day/cq/rewriter/pipeline/AbstractContentHandler.html

 Adobe

Receba ajuda com mais rapidez e facilidade

Novo usuário?