在新数据库中创建iconNote文档

时间:2014-05-29 19:42:20

标签: xpages xpages-ssjs

这是我上一个问题的更明确的扩展。

从XPage上的按钮我创建一个新数据库

targetDB = dir.createDatabase(fileName);

然后我将一堆东西从sourceDB复制到targetDB中。然后我想在targetDB中设置启动属性,这是问题所在。 我知道我可以获得iconNote = targetDB.getDocumentByID(“FFFF0010”),除了目标中没有iconDoc。有没有人有办法用特定的NoteID创建这个文档?

我尝试将iconNote文档从sourceDB复制到targetDB,但这不起作用。更改UNID和noteID。找不到任何数据库方法来创建图标注意。

找到了很多关于如何更改iconNote中的设置的内容,但没有关于如果数据库中没有设置如何创建一个的话。

感谢Jesse我拿了他的代码并将其更改为SSJS并且工作正常。

var dir:NotesDbDirectory = session.getDbDirectory("Development");
var newDB:NotesDatabase = dir.createDatabase("XPages/install/created.nsf");
var importer:NotesDxlImporter = session.createDxlImporter();
importer.setDesignImportOption(6);
var dxl:String = "<?xml version='1.0'?>\n" +
"<note default='true' class='icon'>\n" +
"   <item name='$TITLE'>\n" +
"       <text>Test Title</text>\n" +
"   </item>\n" +
"   <item name='$Flags'>\n" +
"       <text>J7NZq?!</text>\n" +
"   </item>\n" +
"</note>\n";
importer.importDxl(dxl, newDB);
var iconNote = newDB.getDocumentByID("FFFF0010");
iconNote.replaceItemValue("$DefaultXPage", "xpWFSDemo.xsp");
iconNote.replaceItemValue("$DefaultClientXPage", "xpWFSDemo.xsp");
iconNote.save();
dBar.info(iconNote.getItemValueString("$Flags"));

1 个答案:

答案 0 :(得分:2)

像这样的事情要做到这一点:

DbDirectory dir = session.getDbDirectory(null);
Database newDB = dir.createDatabase("tests/created.nsf");
DxlImporter importer = session.createDxlImporter();
importer.setDesignImportOption(DxlImporter.DXLIMPORTOPTION_REPLACE_ELSE_CREATE);
String dxl = "<?xml version='1.0'?>\n" +
"<note default='true' class='icon'>\n" +
"   <item name='$TITLE'>\n" +
"       <text>Some DB Title</text>\n" +
"   </item>\n" +
"   <item name='$Flags'>\n" +
"       <text>J7NZq?!</text>\n" +
"   </item>\n" +
"</note>\n";
importer.importDxl(dxl, newDB);

这两个&#34;打开XPage&#34;已经设置的选项 - 您也可以以相同的方式包含两个XPage名称项,并且从现有数据库导出图标注释可能是个好主意(database.getDocumentByID(&#34; FFFF0010&#34;)。generateXML( ))并粘贴在实际的图标项中,因为这个DXL将产生一个无图标的数据库。尽管如此,它似乎在我的测试中起作用。

在此之后,您将能够使用通常的&#34; FFFF0010&#34;来获取图标注释。伪ID和替换项目值的方式与我之前提到的方式相同。