2010-07-07 70 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