重写 Adobe CQ Image src 属性
Rewrite Adobe CQ Image src attribute
在 AEM 中,页面和图像等内容包含 '/content/'
前缀。我们可以通过 Link Checker Transformer 配置和 resourceResolver.map()
方法重写这些 url。正在为 HTML 元素 <a>
和 <form>
重写 URL。
但我希望它也适用于 <img>
个元素。
我尝试将 <img>
元素添加到 Link Checker Transformer 配置中,方法是将其作为 img:src
[=34 添加到 'Rewrite Elements' 列表中=]:
我也检查了 What am I missing for this CQ5/AEM URL rewriting scenario? 的答案,但两次尝试都没有解决这个问题。
有什么办法吗?
即使 rewriter
和 Link Checker Transformer
不起作用。我通过 Transformer
和 TransformerFactory
接口使用了自定义 LinkRewriter。我的代码基于 Adobe 中的样本。我得出了这样的结论:
@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;
}
}
希望这对其他人有帮助。以下是一些参考资料:
在 AEM 中,页面和图像等内容包含 '/content/'
前缀。我们可以通过 Link Checker Transformer 配置和 resourceResolver.map()
方法重写这些 url。正在为 HTML 元素 <a>
和 <form>
重写 URL。
但我希望它也适用于 <img>
个元素。
我尝试将 <img>
元素添加到 Link Checker Transformer 配置中,方法是将其作为 img:src
[=34 添加到 'Rewrite Elements' 列表中=]:
我也检查了 What am I missing for this CQ5/AEM URL rewriting scenario? 的答案,但两次尝试都没有解决这个问题。
有什么办法吗?
即使 rewriter
和 Link Checker Transformer
不起作用。我通过 Transformer
和 TransformerFactory
接口使用了自定义 LinkRewriter。我的代码基于 Adobe 中的样本。我得出了这样的结论:
@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;
}
}
希望这对其他人有帮助。以下是一些参考资料: