代码之家  ›  专栏  ›  技术社区  ›  Amessihel

IBM ICN 3.0.3-内容对话框中单值属性的选项列表的丑陋显示

  •  0
  • Amessihel  · 技术社区  · 7 年前

    给定一个文档类,条目模板的单值属性与选项列表相关联。如果选择家没有“子级别”(选项),这就很好地工作。

    添加组选项并且用户试图填充属性时,对话框将变丑,并显示在下面:

    Entry Template monovalued Property Control

    是否有一种方法可以自动展开树根选项的树视图,并删除“无”标签(法语中的“aucun”)以及选项列表的符号名(此处模糊)?

    我需要写一个插件来解决这个问题吗?

    更新。 这里“aucun”的目的是清空字段。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Amessihel    6 年前

    我联系了支持团队,用几句话来说,“开箱即用”是不可能的。但我找到了一个解决办法。

    我写了一个响应过滤器来捕捉请求的响应 /p8/openContentClass . 结果显示,它的响应包含选项列表值:

     {
         "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" 获取一级选项列表的条目确保在一级上显示。响应过滤器相关代码如下:

    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;
                 }
             }
         }
        // [...]
    }
    
    推荐文章