Implementieren eines benutzerdefinierten RewriterTransformerFactory

Problem

Links mit „IMG“- und „FORM“-Tags werden nicht neu geschrieben (im Gegensatz zu Links mit „A“-Tags).

Lösung

Um das Neuschreiben zu verbessern, können Sie ein benutzerdefiniertes RewriterTransformerFactory [1] implementieren. Dies ist eine optionale Komponente, die verwendet wird, um den bereits bestehenden Neuschreib-Mechanismus zu erweitern. Ein solcher RewriterTransformerFactory muss eine Transformer [2]-Implementierung ermöglichen, durch die der neu zu schreibende HTML-Code als SAX-Ereignis durchgeht. Um die Implementierung von benutzerdefinierten Rewriter-Transformern zu erleichtern, ist eine AbstractContentHandler [3]-Klasse für die Erweiterung verfügbar, die standardmäßige Implementierungen der Methoden bietet, die in der org.xml.sax.ContentHandler-Schnittstelle genauer beschrieben sind.

Ein Musterbeispiel sieht folgendermaßen aus:

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();
  }
}

Beachten Sie bitte, dass der Wert des Service-Rankings die Reihenfolge beeinflusst, wenn dieser Transformer ausgelöst wird. Weitere Informationen finden Sie unter [1].

Gilt für

CQ5.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-Logo

Bei Ihrem Konto anmelden