我試圖按照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