java - 露天形式过滤器

标签 java alfresco

我正在尝试创建一个表单过滤器,它将对表单进行一些后处理。

我想要实现的目标: 每次创建或修改节点时,都应在节点持久化后应用过滤器。

当我编辑/修改现有节点时它运行得很好,但在创建新节点后它不会运行。

这是我的代码:

    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!!");

    }

}

我可以看到 beforeGenerateafterGenerate 总是被调用,即使在查看时也是如此,这是有道理的。 但是,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/

相关文章:

java - 类型Class的层级不一致

java/tomcat虚拟主机

outlook - 如何在 Alfresco 中自动接收电子邮件并存储它们

java - 如何在部署在 Tomcat 中的 Alfresco 中部署模块

java - 枚举中的特殊字符

java - Java 中的字符串到日期

alfresco - 为什么 Linux 不重定向 Alfresco JLAN 上的 Samba 端口?

authentication - 如何重新启动 alfresco 4 社区中的子系统?

java - 露天休息,文件上传: cannot set description and filename

java - HTTP 状态 400 - 必需的 ... 参数 ... 不存在