我正在尝试创建一个表单过滤器,它将对表单进行一些后处理。
我想要实现的目标: 每次创建或修改节点时,都应在节点持久化后应用过滤器。
当我编辑/修改现有节点时它运行得很好,但在创建新节点后它不会运行。
这是我的代码:
public class CaseFormFilter extends AbstractFilter<Object, NodeRef>
{
protected ServiceRegistry registry;
protected NodeService nodeService;
protected SearchService searchService;
protected SiteService siteService;
protected NamespaceService namespaceService;
public void setServiceRegistry (ServiceRegistry registry)
{
this.registry = registry;
this.nodeService = this.registry.getNodeService();
this.searchService = this.registry.getSearchService();
this.siteService = this.registry.getSiteService();
this.namespaceService = this.registry.getNamespaceService();
}
@Override public void afterPersist(Object item, FormData data, NodeRef persistedObject)
{
System.out.println("Persisting!");
}
@Override public void afterGenerate(Object item, List fields, List forcedFields, Form form, Map context)
{
System.out.println("Calling afterGenerate!!");
}
@Override public void beforeGenerate(Object item, List fields,
List forcedFields, Form form, Map context)
{
System.out.println("Calling beforeGenerate!!");
}
@Override public void beforePersist(Object item, FormData data)
{
System.out.println("Calling beforePersist!!");
}
}
我可以看到 beforeGenerate
和 afterGenerate
总是被调用,即使在查看时也是如此,这是有道理的。
但是,afterPersist 仅在编辑节点时运行,而在创建新节点时则不运行。
我做错了什么或者遗漏了什么吗?维基/文档在这一点上相当无用,阅读 http://wiki.alfresco.com/wiki/Forms_Developer_Guide#Form_Filter只是告诉我查看 DOD5015 模块,该模块确实提供了一个示例,但并未真正提供任何答案。
我正在使用 Alfresco 4.0.b 社区版。
编辑:更多说明
最佳答案
您必须注册表单过滤器两次。我猜您目前只使用 nodeFilterRegistry
注册它。对于基于内容模型(创建节点)的表单,您需要使用 typeFilterRegistry
注册您的过滤器。
以下是具有两个注册表的表单过滤器配置示例:
<bean id="yourFormFilterNode" class="com.domain.YourFormFilter" parent="baseFormFilter">
<property name="filterRegistry" ref="nodeFilterRegistry" />
<property name="nodeService" ref="nodeService" />
</bean>
<bean id="yourFormFilterType" class="com.domain.YourFormFilter" parent="baseFormFilter">
<property name="filterRegistry" ref="typeFilterRegistry" />
<property name="nodeService" ref="nodeService" />
</bean>
关于java - 露天形式过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8476438/