我试图按照this post中提供的示例来创建Alfresco 3.3中的动态列表约束。Alfresco上的动态列表约束
所以,我创建扩展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\" [email protected]\\: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注入,它的正常工作。如果我只从initialize()
调用loadData()
,它将执行Lucene查询,获取数据,然后下拉菜单正确显示它。只有它不是动态的:除非我重新启动Alfresco服务器,否则数据不会刷新。
getAllowedValues()
每当UI必须显示具有此约束的属性时调用。关于该职位的想法是从getAllowedValues()
也拨打loadData()
,所以这些值实际上是动态的。但是当我这样做时,我没有收到任何数据。 Lucene查询是相同的,但返回0结果,所以我的下拉列表只显示-
。
顺便说一句,我正在做的查询是:+TYPE:"cm:category" [email protected]\:description:"something here"
,并且在每种情况下都是一样的。它从初始化,但不从getAllowedValues。
关于为什么会发生这种情况的任何想法,或者我该如何解决?
感谢
编辑:我们升级到露天3.3.0g社区昨天,但我们仍然有同样的问题。
感谢您的回答(我知道,我有点晚... :)。当你写下你的答案时,我已经被转到了公司内的另一个项目中,所以我从来没有机会尝试你的建议。无论如何,谢谢你,尤其是关于价值动态列表的警告! – AJPerez 2012-05-15 15:38:13