我们已经实现了一个注册如下的事件处理程序:
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingConstants;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.resource.observation.ResourceChangeListener;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventConstants;
import org.osgi.service.event.EventHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* This is a node observer class which would observe the path /content/we-retail
* for any addition or updation of nodes (type = cq:PageContent).
* @author
*/
@Component(label = "Test Event Listener", immediate = true, metatype =
false, enabled = true)
@Properties({
/* @Property(name = EventConstants.EVENT_TOPIC, value = ReplicationAction.EVENT_TOPIC)
})*/
@Property(name = EventConstants.EVENT_TOPIC, value =
{"org/apache/sling/api/resource/Resource/ADDED",
"org/apache/sling/api/resource/Resource/CHANGED"}),
@Property(name = EventConstants.EVENT_FILTER, value = "(&" +
"(path=/content/we-retail/us/en/*/jcr:content) (|(" + SlingConstants
.PROPERTY_CHANGED_ATTRIBUTES + "=*jcr:title) "
+ "(" + ResourceChangeListener.CHANGES + "=*jcr:title)))")
})
@Service(EventHandler.class)
public class TestEventHandler implements EventHandler {
private static final Logger LOG = LoggerFactory.getLogger(TestEventHandler.class);
/*
* Reference of ResourceResolverFactory object.
*/
@Reference
private ResourceResolverFactory resourceResolverFactory;
/*
* (non-Javadoc)
* @see org.osgi.service.event.EventHandler#handleEvent(org.osgi.service.event.Event)
*/
@Override
public void handleEvent(Event event) {
LOG.info("Hi event is called ......");
}
}
问题是:在以下路径下的任何页面上更改jcr:title的属性值时,我们的handleEvent不会被捕获:/ content / we-retail / us / en
AEM版本为:6.4 使用的吊索版本是:org.apache.sling.api
答案 0 :(得分:0)
从2.0.6(Sling API捆绑包2.0.6)开始,不推荐使用。
您应该实施org.apache.sling.api.resource.observation.ResourceChangeListener
请参阅示例:ResourceChangeListener sample