如何以编程方式取消页面激活?

x!=y满足时,我想取消某些页面的激活。 我试图用EventHandler做到这一点。 作者点击了sidekick activate Page ,我的EventHandler获取了一个复制事件,并测试x!=y 。 如果满足,则必须取消页面激活。 我的问题是如何取消激活页面?

 @Component(immediate = true, label = "TEST") @Service @Property(name = "event.topics", value = { ReplicationAction.EVENT_TOPIC }) public class EventHandler implements EventHandler { String feedback = ""; public void handleEvent(final Event event) { String x = "foo"; String y = "baar"; if (x != y) { canclePageActivation(); feedbackForAuthor = "Page can not be activated because x is not equal y"; } } } 

复制页面调用EventHandler 。 你需要的是com.day.cq.replication.Preprocessor 。 如果在preprocess()方法中抛出ReplicationException ,则复制将被取消,用户将收到exception消息:

 @Component(metatype = false, immediate = true) @Service public class SamplePreprocessor implements Preprocessor { @Override public void preprocess(ReplicationAction action, ReplicationOptions options) throws ReplicationException { if (somethingIsWrong()) { throw new ReplicationException("this message will be displayed to the user"); } } }