我正在尝试按照本文中提供的示例,在 Alfresco 3.3 中创建动态列表约束。
所以,我创建了自己的类扩展ListOfValuesConstraint
:
public class MyConstraint extends ListOfValuesConstraint {
private static ServiceRegistry registry;
@Override
public void initialize() {
loadData();
}
@Override
public List getAllowedValues() {
//loadData();
return super.getAllowedValues();
}
@Override
public void setAllowedValues(List allowedValues) {
}
protected void loadData() {
List<String> values = new LinkedList<String>();
String query = "+TYPE:\"cm:category\" +@cm\\:description:\"" + tipo + "\"";
StoreRef storeRef = new StoreRef("workspace://SpacesStore");
ResultSet resultSet = registry.getSearchService().query(storeRef, SearchService.LANGUAGE_LUCENE, query);
// ... values.add(data obtained using searchService and nodeService) ...
if (values.isEmpty()) {
values.add("-");
}
super.setAllowedValues(values);
}
}
ServiceRegistry
参考是由 Spring 注入的,它工作正常。如果我只调用loadData()
from initialize()
,它会执行 Lucene 查询,获取数据,然后下拉菜单会正确显示。只是它不是动态的:除非我重新启动 Alfresco 服务器,否则数据不会刷新。
getAllowedValues()
每次 UI 必须显示具有此约束的属性时调用。引用帖子上的想法也是调用loadData()
from getAllowedValues()
,因此这些值实际上是动态的。但是当我这样做时,我没有得到任何数据。Lucene 查询是一样的,但是返回 0 个结果,所以我的下拉列表只显示-
.
顺便说一句,我正在做的查询是:+TYPE:"cm:category" +@cm\:description:"something here"
,并且在每种情况下都是相同的。它可以从初始化开始,但不能从 getAllowedValues 开始。
关于为什么会发生这种情况的任何想法,或者我该如何解决?
谢谢
编辑:我们昨天升级到 Alfresco 3.3.0g 社区,但我们仍然遇到同样的问题。