Пользовательский подключаемый модуль IBM Filenet Content Navigator — строка GridX становится пустой после редактирования свойств

Я работаю над плагином ICN, и у меня возникли проблемы с исправлением этого сбоя, каждый результат загружается так, как он должен, в виджете сетки, но как только я вношу в него какие-либо изменения на правой панели и сохраняю их, сетка кажется перезагрузите эту строку, но она станет пустой, поскольку она не загружает атрибуты, привязанные к столбцам, которые я указал в коде Java для построения сетки.

Сетка плагинов ICN 1

Сетка плагинов ICN 2

В качестве примера я использую демонстрационный плагин «Глава 6 Создание функции с поисковыми службами и виджетами» из Redbook от IBM, но где именно в этом виде плагина я могу заставить навигатор загружать эти настраиваемые столбцы и их атрибуты, которые я хочу перезагрузить после редактирования?

ПРИМЕЧАНИЕ. Под столбцами по умолчанию я подразумеваю эти атрибуты, которые каждая строка всегда будет иметь по умолчанию:

row.addAttribute("ID", doc.get_Id().toString(), JSONResultSetRow.TYPE_STRING, null, doc.get_Id().toString());
row.addAttribute("className", doc.getClassName(), JSONResultSetRow.TYPE_STRING, null, doc.getClassName());
row.addAttribute("ModifiedBy", doc.get_LastModifier(), JSONResultSetRow.TYPE_STRING, null, doc.get_LastModifier());
row.addAttribute("LastModified", doc.get_DateLastModified().toString(), JSONResultSetRow.TYPE_TIMESTAMP, null, doc.get_DateLastModified().toString());
row.addAttribute("Version", doc.get_MajorVersionNumber() + "." + doc.get_MinorVersionNumber(), JSONResultSetRow.TYPE_STRING, null, doc.get_MajorVersionNumber() + "." + doc.get_MinorVersionNumber());
row.addAttribute("{NAME}", doc.get_Name(), JSONResultSetRow.TYPE_STRING, null, doc.get_Name());
row.addAttribute("ContentSize", doc.get_ContentSize(), JSONResultSetRow.TYPE_INTEGER, null, null);

И под кастомом я подразумеваю что-то вроде этого, где все загружается из XML-файла:

ArrayList<PluginProperty> pr = pxs.getResults(contextId);
    for (int i = 0; i < pr.size(); i++) {
        String id = "{" + i + "}";
        String propName = pr.get(i).getName();
        String propType = pr.get(i).getType();
        String prop = "";
    .
    .
    .
else if (propType.equalsIgnoreCase("StringList")) {
    int size = doc.getProperties().get(propName).getStringListValue().size();
    for (int j = 0; j < size; j++) {
        prop += doc.getProperties().get(propName).getStringListValue().get(j).toString() + "; ";
    }
}
else if (propType.equalsIgnoreCase("StringValue")) {
    prop = doc.getProperties().get(propName).getStringValue();
}
    .
    .
    .
    row.addAttribute(id, prop, JSONResultSetRow.TYPE_STRING, null, prop);
}

person Rikku121    schedule 28.07.2014    source источник
comment
... Итак, это java или javascript?   -  person Unihedron    schedule 28.07.2014
comment
Плагин использует оба. Но я не знаю, в чем именно заключается проблема, может быть только на стороне Java.   -  person Rikku121    schedule 28.07.2014


Ответы (2)


После сохранения данных информации о документе вызывается openItem. Это обновит элемент с последними данными.

ContentList получает значение ячейки из метода getValue _ModelStore.js. Этот метод вызывает item.getDisplayValue, чтобы получить значение для отображения в ячейке. Скорее всего, либо item.getDisplayValue возвращает значение null (или пустое), либо для этого атрибута не вызывается getValue _ModelStore.

Я бы предложил посмотреть JSON, возвращаемый из openItem, чтобы убедиться, что он выглядит завершенным.

person Carolyn    schedule 29.07.2014
comment
Посмотрел вокруг, но затем решил сначала попробовать что-то более простое, так как проблема, очевидно, была в идентификаторе атрибутов, я немного отправляю ответ, спасибо. - person Rikku121; 30.07.2014

Наконец нашел проблему, по-видимому, ICN не хочет, чтобы вы использовали пользовательские идентификаторы для своих строк. Я загружал кучу строк из файла XML и создавал такие строки:

ArrayList<PluginProperty> pr = pxs.getResults(contextId);
    for (int i = 0; i < pr.size(); i++) {
        String id = "{" + i + "}";
        String propName = pr.get(i).getName();
        String propType = pr.get(i).getType();
        String prop = "";
    .
    .
    .
else if (propType.equalsIgnoreCase("StringList")) {
    int size = doc.getProperties().get(propName).getStringListValue().size();
    for (int j = 0; j < size; j++) {
        prop += doc.getProperties().get(propName).getStringListValue().get(j).toString() + "; ";
    }
}
else if (propType.equalsIgnoreCase("StringValue")) {
    prop = doc.getProperties().get(propName).getStringValue();
}
    .
    .
    .
    row.addAttribute(id, prop, JSONResultSetRow.TYPE_STRING, null, prop);
}

Теперь, чтобы заставить его работать, я был вынужден изменить переменную id на:

String id = pr.get(i).getName();

Чтобы идентификаторы выглядели как «Id», «DocumentTitle», «Creator», «DateCreated» и «DateLastModified», в точности как имя каждого свойства вместо «{0}», «{1}», «{ 2}", и т.д.

Надеюсь, это может помочь кому-то еще!

person Rikku121    schedule 30.07.2014