【问题标题】:IBM Filenet Content Navigator Custom Plugin - GridX row goes blank after editing propertiesIBM Filenet Content Navigator 自定义插件 - 编辑属性后 GridX 行变为空白
【发布时间】:2014-07-28 14:55:11
【问题描述】:

我正在开发一个 ICN 插件并且无法修复此故障,每个结果都以它应该在网格小部件上的方式加载,但只要我在右侧面板上对其进行任何更改并保存它们,网格似乎重新加载了该行,但它变为空白,因为它没有加载绑定到我在 java 代码中指定的列以构建网格的属性。

我正在使用来自 ibm 红皮书的“第 6 章创建具有搜索服务和小部件的功能”演示插件作为示例,但是我可以在此类插件的确切位置让导航器加载我想要的这些自定义列及其属性编辑后要重新加载吗?

注意: 默认情况下,我的意思是这些列,默认情况下每行都将具有属性:

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);
}

【问题讨论】:

  • ...这是java 还是javascript
  • 插件同时使用了两者。但我不知道问题到底出在哪里,可能只是在 java 方面。

标签: java javascript plugins filenet-p8 ibm-content-navigator


【解决方案1】:

文档信息数据保存后,调用openItem。这会使用最新数据更新项目。

ContentList 从 _ModelStore.js 的 getValue 方法获取单元格值。此方法调用 item.getDisplayValue 以获取要在单元格中显示的值。很可能 item.getDisplayValue 返回 null(或空白),或者没有为此属性调用 _ModelStore 的 getValue。

我建议查看从 openItem 返回的 JSON 以验证它是否完整。

【讨论】:

  • 环顾四周,但后来决定先尝试一些更简单的东西,因为问题显然出在属性 ID 中,我稍后会发布答案,谢谢。
【解决方案2】:

终于找到了问题,显然 ICN 不希望您为您的行使用自定义 ID。 我正在从 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 看起来像“Id”、“DocumentTitle”、“Creator”、“DateCreated”和“DateLastModified”,与每个属性的名称完全一样,而不是“{0}”、“{1}” 、“{2}”等

希望这可能对其他人有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多