我正在编写一个简单的Sling过滤器,以便在AEM 5.6.1上运行。我已经使用过滤器使用配置属性了,我原本希望它出现在/ system / console / configMgr中,但事实并非如此。
@SlingFilter(generateComponent = true, generateService = true, order = -700, scope = SlingFilterScope.REQUEST)
public class SimpleFilter implements Filter {
@Property(value = "property.defaultvalue")
private static final String PROPERTY_KEY = "property.key";
private String configuredValue;
@Activate
protected void activate(final ComponentContext componentContext) throws Exception {
Map<String, String> config = (Map<String, String>) componentContext.getProperties();
this.configuredValue = config.get(PROPERTY_KEY);
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println(this.configuredValue);
}
}
我能够安装捆绑包,看看过滤器是否正常工作,可以在/ system / console / bundles中找到它,但它没有像我一样被添加到/ system / console / configMgr认为它来自@Property注释的存在。我错过了一步吗?
答案 0 :(得分:1)
如果需要在配置管理器中显示配置,则需要指定metatype = true
和generateComponent
。默认情况下,metatype为false。
@SlingFilter(generateComponent = true,
generateService = true,
metatype = true,
order = -700,
scope = SlingFilterScope.REQUEST)
请参阅Apache Felix - SCR Annotations和Apache Felix Metatype Service以便更好地了解它。