我有一个带有关联字段的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.");
}
}
答案 0 :(得分:0)
已找到workaround:
form.addData()
在某些Map.put调用上抛出异常,由于某种原因,在关联的上下文中,无法更新字段数据的映射。我用内部方法form.getFormData().addFieldData()
替换了上面的行,将强制覆盖参数设置为true并且它可以正常工作。现在以我的形式正确初始化了该关联。