IBM ICN 3.0.3 - уродливое отображение списка ChoiceList для однозначного свойства в диалоговом окне содержимого

Для заданного класса Document однозначное свойство шаблона ввода связано с ChoiceList. Это хорошо работает, если у ChoiceList нет "подуровней" (Choice).

Когда добавлен выбор группы и пользователь пытается заполнить свойство, диалоговое окно становится уродливым, как показано ниже:

Шаблон ввода однозначного свойства управления

Есть ли способ автоматически развернуть древовидное представление для корневых вариантов выбора и, кроме того, удалить метку "none" ("Aucun" на французском языке), а также символическое имя списка ChoiceList (размыто здесь)?

Должен ли я написать плагин, чтобы исправить проблему?

Обновить. Цель "Aucun" здесь состоит в том, чтобы очистить поле.

1 ответ

Решение

Я связался со службой поддержки, и в двух словах, это невозможно "из коробки". Впрочем, с плагином можно иметь дело с событиями, связанными с этим элементом управления.

Я связался со службой поддержки, и в двух словах, это невозможно "из коробки". Но я нашел обходной путь.

Я написал 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;
             }
         }
     }
    // [...]
}
Другие вопросы по тегам