J'essaie de suivre les exemples fournis dans this post, pour créer une contrainte de liste dynamique dans Alfresco 3.3.Contrainte de liste dynamique sur Alfresco
Donc, j'ai créé ma propre classe extension 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);
}
}
référence ServiceRegistry
est injecté au printemps, et il fonctionne très bien. Si j'appelle seulement loadData()
de initialize()
, il exécute la requête Lucene, obtient les données, et la liste déroulante l'affiche correctement. Seulement que ce n'est pas dynamique: les données ne sont pas actualisées à moins que je ne redémarre le serveur Alfresco.
getAllowedValues()
est appelée chaque fois que l'interface utilisateur doit afficher une propriété ayant cette contrainte. L'idée sur le poste visé est d'appeler loadData()
de getAllowedValues()
aussi, de sorte que les valeurs seront réellement dynamiques. Mais quand je fais cela, je ne reçois aucune donnée. La requête Lucene est la même, mais renvoie 0 résultats, de sorte que ma liste déroulante affiche uniquement -
.
BTW, la requête que je fais est: +TYPE:"cm:category" [email protected]\:description:"something here"
, et c'est la même chose dans chaque cas. Cela fonctionne à partir d'initialize, mais ne provient pas de getAllowedValues.
Des idées sur pourquoi cela se passe-t-il, ou comment puis-je le résoudre?
Merci
Edit: nous sommes passés à Alfresco Community 3.3.0g hier, mais nous ayant toujours les mêmes questions.
Merci pour votre réponse (je sais, je suis un peu en retard ... :). Au moment où vous avez écrit votre réponse, j'avais déjà été transféré dans un autre projet au sein de mon entreprise, donc je n'ai jamais eu l'occasion d'essayer votre suggestion. En tout cas, merci, surtout pour l'avertissement sur la liste dynamique des valeurs! – AJPerez