Aem 重写Adobe CQ图像src属性
在AEM中,页面和图像等内容包含Aem 重写Adobe CQ图像src属性,aem,sling,Aem,Sling,在AEM中,页面和图像等内容包含'/content/'前缀。我们可以通过链接检查器Transformer配置和resourcesolver.map()方法重写这些url。正在为HTML元素重写URL,但两次尝试都无法解决此问题 有什么方法可以做到这一点吗?即使重写器和链接检查器变压器不起作用。通过使用Transformer和TransformerFactory接口,我使用了一个自定义链接重写器。我的代码基于的示例。我得出了这样的结论: @Component( metatype = tr
'/content/'
前缀。我们可以通过链接检查器Transformer配置和resourcesolver.map()
方法重写这些url。正在为HTML元素重写URL,但两次尝试都无法解决此问题
有什么方法可以做到这一点吗?即使重写器和链接检查器变压器
不起作用。通过使用Transformer
和TransformerFactory
接口,我使用了一个自定义链接重写器。我的代码基于的示例。我得出了这样的结论:
@Component(
metatype = true,
label = "Image Link Rewriter",
description = "Maps the <img> elements src attributes"
)
@Service(value = TransformerFactory.class)
@Property(value = "global", propertyPrivate = true)
public class ImageLinkRewriter implements Transformer, TransformerFactory {
// some variables
public CustomLinkTransformer() { }
@Override
public void init(ProcessingContext context,
ProcessingComponentConfiguration config) throws IOException {
// initializations here
}
@Override
public final Transformer createTransformer() {
return new CustomLinkTransformer();
}
@Override
public void startElement(String uri, String localName,
String qName, Attributes atts) throws SAXException {
if ("img".equalsIgnoreCase(localName)) {
contentHandler.startElement(uri, localName, qName, rewriteImageLink(atts));
}
}
private Attributes rewriteImageLink(Attributes attrs) {
String attrName = "src";
AttributesImpl result = new AttributesImpl(attrs);
String link = attrs.getValue(attrName);
String mappedLink = resource.getResourceResolver().map(request, link);
result.setValue(result.getIndex(attrName), mappedLink);
return result;
}
}
@组件(
元类型=真,
label=“图像链接重写器”,
description=“映射
希望这对其他人有所帮助。以下是一些参考资料:
您在/apps/XXX/config/rewriter中配置了重写器吗?@santiagozky不幸的是,没有。我将阅读如何通过它配置重写器。@santiagozky我尝试过它,但是对于任何来到这里的人,
元素没有任何变化:此答案中的源代码有点混乱。有关完整的工作示例,请参阅此要点我创建了: