Alfresco:如何为cm:person关联设置默认表单值

时间:2016-01-12 10:12:01

标签: alfresco

我有一个带有关联字段的Alfresco工作流表单,允许选择多个用户。字段UI定义是隐式的(模型定义关联)。

我想用当前登录的用户初始化该字段。

我尝试过使用表单过滤器并使用FieldUtils.makeAssociationField()作为值form.addField()使用NodeRef,但这会导致UnsupportedOperationException

虽然我使用相同的技术来初始化属性字段。

有人能指出我的解决方法吗?

private void initInitatorNodeRef(final Form form)
    {

        final String userName = AuthenticationUtil.getFullyAuthenticatedUser();

        if (userName != null)
        {
            final NodeRef person = personService.getPerson(userName);

            if (person != null)
            {

                final AssociationDefinition definition =
                    serviceRegistry.getDictionaryService().getAssociation(MywfModel.ASSOC_AUTHORS);

                final Field field =
                    FieldUtils.makeAssociationField(
                        definition, person, null, serviceRegistry.getNamespaceService(),
                        serviceRegistry.getDictionaryService());

                form.addField(field);
            }
            else
            {
                throw new RuntimeException("Person not found.");
            }
        }
        else
        {
            throw new RuntimeException("UserName not found.");
        }

    }

1 个答案:

答案 0 :(得分:0)

已找到workaround

  

form.addData()在某些Map.put调用上抛出异常,由于某种原因,在关联的上下文中,无法更新字段数据的映射。我用内部方法form.getFormData().addFieldData()替换了上面的行,将强制覆盖参数设置为true并且它可以正常工作。现在以我的形式正确初始化了该关联。