この投稿で提供されている例に従って、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()
からのみ呼び出すとinitialize()
、Lucene クエリが実行され、データが取得され、ドロップダウンに正しく表示されます。Alfresco サーバーを再起動しない限り、データは更新されません。
getAllowedValues()
UI がこの制約を持つプロパティを表示する必要があるたびに呼び出されます。参照された投稿のアイデアは、loadData()
からgetAllowedValues()
も呼び出すことであるため、値は実際には動的になります。しかし、これを行うと、データが取得されません。Lucene クエリは同じですが、0 の結果を返すため、ドロップダウンには のみが表示されます-
。
ところで、私がやっているクエリは:+TYPE:"cm:category" +@cm\:description:"something here"
で、どのケースでも同じです。初期化からは機能しますが、getAllowedValues からは機能しません。
なぜこれが起こっているのか、またはどうすれば解決できるのかについてのアイデアはありますか?
ありがとう
編集:昨日 Alfresco 3.3.0g Community にアップグレードしましたが、まだ同じ問題が発生しています。