给定Document类,输入模板的单值属性与ChoiceList关联。如果ChoiceList没有“子级别”(选择),则此方法很好。
添加“组选择”后,用户尝试填充属性时,对话框将变得丑陋,并显示如下:
有没有一种方法可以自动展开根Choices的树形视图,并且还可以删除“ none”标签(法文为“ Aucun”)以及ChoiceList的符号名(此处模糊)?
我必须编写插件来解决该问题吗?
更新。此处“ Aucun”的目的是清空该字段。
答案 0 :(得分:0)
我联系了支持团队,仅此而已,这是不可能的。但是我找到了解决方法。
我写了一个ResponseFilter来捕获请求/p8/openContentClass
的响应。原来它的响应包含ChoiceList值:
{
"classes": [{
"parentClassId": "<PARENTCLASSID>",
"template_name": "<ENTRYTEMPLATE>",
/* [...] */
}
],
/* [...] */
"criterias": [/* [...] */, {
"settability": "readWrite",
"defaultOperator": "EQUAL",
"minValue": null,
"uniqueValues": true,
"orderable": false,
"choiceList": {
"choices": /* <----- here */,
"displayName": "CL_ToFilter"
},
/* [...] */
"name": "<propertyName>"
}
]
}
重新格式化"choices"
条目以获得一级选择列表,确保在一级显示。在ResponseFilter的相关代码下面:
public class ChoiceListValuesResponseFilter extends PluginResponseFilter {
public String[] getFilteredServices() {
return new String[] { "/p8/openContentClass"/* "/p8/openItem"*/ };
}
public void filter(String serverType, PluginServiceCallbacks callbacks,
HttpServletRequest request, JSONObject jsonResponse) throws Exception {
// [...]
JSONArray jsonProperties =
(JSONArray) jsonResponse.get("criterias");
Iterator it = jsonProperties.iterator();
while (it.hasNext()) {
JSONObject jo = (JSONObject) it.next();
if ("<PROPERTYWITHFILTEREDCL>".equals(jo.get("name"))) {
JSONObject choiceListJo = (JSONObject) jo.get("choiceList");
// do the processing here
break;
}
}
}
// [...]
}