我在XPage的按钮上写了这个SSJS。我想将当前数据库导出到dxl文件。
var stream:NotesStream = session.createStream();
var fileName:String = "c:\\Export\\exportedDB.dxl";
dBar.info(fileName,"Start Try");
try{
if(stream.open(fileName)){
dBar.info("File Opened");
stream.truncate();
dBar.info("stream Truncate");
exporter:NotesDxlExporter = session.createDxlExporter();
dBar.info("Exporter Created");
stream.writeText(exporter.exportDxl(database));
dBar.info("Export Completed");
stream.close();
dBar.info("Stream Closed")
}else{
dBar.info("Could Not Open File");
}
}catch(e){
dBar.info("try failed");
}
我在调试工具栏中收到消息“Exporter Created”但stream.write失败并转到“try failed”。我拥有当前数据库的经理权限,因此我认为这不是权利问题。根据我能够找到的示例,这应该工作。有人看到我的代码有问题吗?
答案 0 :(得分:2)
尝试将“var”添加到第一个导出语句:
var exporter:NotesDxlExporter = session.createDxlExporter();
更好:使用Java做到这一点。它可以更容易地捕获这样的错误。
答案 1 :(得分:0)
将整个数据库导出为DXL可能有点棘手。一个有问题的设计元素,整个导出失败。所以这不是你可以100%依赖的。
当我编写DXLMagic(源代码在OpenNTF上)时,我学到了很多教训。对于后来的Notes版本,Dxl处理已经变得更好,但不是“最终用户就绪”
我希望初学者遵循Per的建议,并在Java中这样做。其次,重用DXLMagic的代码。在那里我一个接一个地导出一个元素(并将其拼接成一个结果),以避免一个元素不干净时失败。
Dxl对XPage的用处不是很好,你可能最好使用OnDisk项目(仅限代码,另一端需要设计师)