Xpages 在新数据库中创建iconNote文档

Xpages 在新数据库中创建iconNote文档,xpages,xpages-ssjs,Xpages,Xpages Ssjs,这是对我上一个问题的更明确的扩展 通过XPage上的按钮,我创建了一个新数据库 targetDB=dir.createDatabase(文件名) 然后,我将一堆东西从sourceDB复制到targetDB中。然后我想在targetDB中设置启动属性,这就是问题所在。 我知道我可以获取iconNote=targetDB.getDocumentByID(“FFFF0010”),除非目标中没有iconDoc。是否有人可以使用特定的NoteID创建此文档 我尝试将iconNote文档从sourceDB复

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

通过XPage上的按钮,我创建了一个新数据库

targetDB=dir.createDatabase(文件名)

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

我尝试将iconNote文档从sourceDB复制到targetDB,但没有成功。更改UNID和noteID。找不到任何数据库方法来创建图标注释

在iNote中找到了很多关于如何更改设置的内容,但是在数据库中没有设置的情况下,没有找到如何创建设置的内容

多亏了杰西,我把他的代码改成了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"));
var-dir:NotesDbDirectory=session.getDbDirectory(“开发”);
var newDB:NotesDatabase=dir.createDatabase(“XPages/install/created.nsf”);
变量导入器:NotesDxlImporter=session.createDxlImporter();
进口商。设置设计进口选项(6);
var dxl:String=“\n”+
“\n”+
“\n”+
“测试标题\n”+
“\n”+
“\n”+
“J7NZq?!\n”+
“\n”+
“\n”;
进口商.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));

像这样的东西应该这样做:

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);
DbDirectory=session.getDbDirectory(null);
Database newDB=dir.createDatabase(“tests/created.nsf”);
DxlImporter importer=session.createDxlImporter();
导入器.setDesignImportOption(DxlImporter.DXLIMPORTOPTION\u REPLACE\u ELSE\u CREATE);
字符串dxl=“\n”+
“\n”+
“\n”+
“某些数据库标题\n”+
“\n”+
“\n”+
“J7NZq?!\n”+
“\n”+
“\n”;
进口商.importDxl(dxl,newDB);
这已经设置了两个“open XPage”选项-您也可以以相同的方式包含两个XPage名称项,最好从现有数据库(database.getDocumentByID(“FFFF0010”).generateXML())导出图标注释,并粘贴到实际的图标项中,因为此DXL将生成一个无图标的数据库。尽管如此,它似乎在我的测试中起到了基础作用


在此之后,您将能够使用常见的“FFFF0010”伪ID获取图标注释,并以我前面提到的相同方式替换项目值。

不要忘记ACL注释。这也是一个默认视图。实际上,整个问题的最佳解决方案可能是使用一个与数据库#createFromTemplate一起使用的模板数据库。虽然一点一点地编写一个新的Notes数据库也是一个有趣的项目。您可以导入一个完整(空白)的数据库,而不是使用DXL导入单个Notes。这将符合所有的要求。杰西-事实上你是对的,模板将是最好的解决方案,但因为我不能控制最终用户环境,模板就是不实用。Sven-要对空白数据库进行dxl导入,必须有一个空白数据库可供导入,因此我猜我们与使用模板处于同一点。多亏了所有人——我所拥有的一切都应该发挥作用,并完成我的工作。@BillF:不,你可以使用硬编码的DXL。不需要空白数据库(仅一次,以生成DXL)。