我有一项任务,在上传特定类型的文档时,我必须使用客户端名称下拉。客户端的名称与给定站点中的文件夹相关联。
例如假设我在露天有一个站点XYZ,我有10个文件夹,名称Client 1到Client 10都在同一级别,现在在上传文档时,客户名称字段应填充站点中存在的文件夹的名称。
我创建了一个自定义java类,它将获取文件夹名称并在custom-model.xml文件中对客户端名称设置约束。我能够将硬编码数据显示为下拉列表,但现在我希望动态获取数据。
由于我是露天新手,我不知道如何完成它。我正在尝试使用Alfresco公共java api和CMIS,但无法获得任何地方。
对此的任何帮助都将非常有帮助。
这是代码。
model.xml
<!-- For client name -->
<constraint name="ev:clientNames" type="com.eisenvault.repo.dictionary.constraint.ClientNameConstraint">
<parameter name="allowedValues">
<list>
<value></value>
<!-- Will be empty -->
</list>
</parameter>
</constraint>
ClientNameConstraint.java
import java.io.Serializable;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.alfresco.repo.dictionary.constraint.ListOfValuesConstraint;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class ClientNameConstraint extends ListOfValuesConstraint implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
Log log = LogFactory.getLog(ClientNameConstraint.class);
private List<String> allowedValues;
protected boolean caseSensitive;
protected boolean sorted;
public ClientNameConstraint(){
caseSensitive = true;
sorted = false;
allowedValues = Collections.emptyList();
}
@Override
public List<String> getAllowedValues() {
allowedValues = Arrays.asList("Client1", "Client2", "Client3", "Client4", "Client5", "Client6");
Collections.sort(allowedValues);
super.setAllowedValues(allowedValues);
return allowedValues;
}
@Override
public void initialize() {
System.out.println("Initialized called in ClientNameConstraint....................................");
super.initialize();
checkPropertyNotNull(ALLOWED_VALUES_PARAM, allowedValues);
}
}
答案 0 :(得分:1)
在这种情况下,我会避免使用约束。其他人可能不同意,但动态约束可能比它的价值更麻烦。这是因为您可以获得完整性异常,如果您的客户端列表不同步,可能会处理这些异常。想象一下,如果您使用一个版本的列表创建一些文档,但随后删除一个文件夹。现在对这些文档的任何操作都会抛出完整性异常。
我个人会创建一个webscript(如果你愿意,可以在Javascript中),它会读出文件夹并将它们作为JSON返回。然后,我将创建一个自定义共享组件并配置我的表单以使用此组件。该组件将从您的webscript构建vales列表,但不依赖于约束。
它比您最初的想法“更多”,但它更灵活,如果您的客户端文件夹与内容不同步,您将不会遇到任何升级等问题。