这是我上一个问题的更明确的扩展。
从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"));
答案 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和替换项目值的方式与我之前提到的方式相同。