2010-07-07 33 views
1

我試圖按照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社區昨天,但我們仍然有同樣的問題。

回答

4

此動態列表的值約束是一個壞主意,我告訴你爲什麼:

的露天倉庫應處於有效狀態的所有時間。你的(動態)約束列表將會改變(這就是爲什麼你希望它是動態的)。添加項目不會有問題,但編輯和刪除項目是。如果要從選項列表中刪除項目,則使用此屬性值的存儲庫中的節點將無效。

您將無法輕鬆解決這個問題。標準UI將在無效狀態節點上失敗。只需編輯該值並將其設置爲有效值即可。你被警告了。

因爲ListConstraint的默認UI小部件是下拉列表,所以不是每個下拉列表都應該是ListConstraint。 ListConstraints是爲狀態屬性設計的:{Draft,Waiting Approval,Approved}。不是用於客戶名稱的列表。

我在過去的幾年裏看到過這個相同的話題。你真正想要的是讓用戶從動態選項列表中選擇一個值(組合框)。這是一個UI問題,而不是字典模型問題。你應該使用web-config-context.xml(Alfresco網絡用戶界面)或Alfresco Share來設置。最後一個更靈活,我會建議走這條路。

+0

感謝您的回答(我知道,我有點晚... :)。當你寫下你的答案時,我已經被轉到了公司內的另一個項目中,所以我從來沒有機會嘗試你的建議。無論如何,謝謝你,尤其是關於價值動態列表的警告! – AJPerez 2012-05-15 15:38:13