2016-07-07 30 views
0

我有一个xpage有一个视图(按订单日期订单)。编辑xpage通用ID

我有一个xpage,用户选择客户在xpage的一个部分上订购产品。他们订购产品的xpage的另一部分。只要他们添加第一个产品,就保存客户信息(数据源:在xpage上的表单“fOrderForm”/ document1)。每个订购的产品都作为单独的Notes文档(fOrderLineItem/docLineItem)存储,其中的订单ID作为组合xpage上的数据网格上的查找。

在视图xpage上,当我点击其中一个订单时,即使该ID在URL中,系统也会给我一个无效的通用ID错误。是否必须手动加载after/before页面加载事件中的document1数据源上的每个字段,并设置数据网格使用的范围变量?如果我删除与Notes表单关联的xpage,它将正确打开,但这不起作用。

一个从视图URL是 http://localhost/SalesOrders.nsf/xOrderForm.xsp?documentId=CADCB3E38FF310EA85257F8100493670&action=editDocument

错误日志:

com.ibm.xsp.FacesExceptionEx: Could not open the document 
    com.ibm.xsp.model.domino.DominoDocumentData.doOpenDocument(DominoDocumentData.java:509) 
    com.ibm.xsp.model.AbstractDocumentDataSource.openDocument(AbstractDocumentDataSource.java:148) 
    com.ibm.xsp.model.AbstractDocumentDataSource.load(AbstractDocumentDataSource.java:100) 
    com.ibm.xsp.model.AbstractDataSource.getDataContainer(AbstractDataSource.java:474) 
    com.ibm.xsp.model.domino.DominoDocumentData.getDataObject(DominoDocumentData.java:145) 
    com.ibm.xsp.model.AbstractDataSource.pushData(AbstractDataSource.java:576) 
    com.ibm.xsp.util.DataPublisher.publishControlData(DataPublisher.java:181) 
    com.ibm.xsp.component.UIViewRootEx.publishControlData(UIViewRootEx.java:1288) 
    com.ibm.xsp.component.UIViewRootEx.initBeforeContents(UIViewRootEx.java:1615) 
    com.ibm.xsp.page.compiled.AbstractCompiledPage.initComponent(AbstractCompiledPage.java:333) 
    com.ibm.xsp.page.compiled.AbstractCompiledPage.createTree(AbstractCompiledPage.java:256) 
    com.ibm.xsp.page.compiled.AbstractCompiledPage.createViewRoot(AbstractCompiledPage.java:167) 
    com.ibm.xsp.application.ViewHandlerExImpl._createViewRoot(ViewHandlerExImpl.java:521) 
    com.ibm.xsp.application.ViewHandlerExImpl.createViewRoot(ViewHandlerExImpl.java:567) 
    com.ibm.xsp.application.ViewHandlerExImpl.doCreateView(ViewHandlerExImpl.java:142) 
    com.ibm.xsp.application.ViewHandlerEx.createView(ViewHandlerEx.java:90) 
    com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:251) 
    com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157) 
    com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160) 
    com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138) 
    com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576) 
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:853) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565) 
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319) 
    com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662) 
    com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482) 
    com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:350) 
    com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:306) 
    com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272) 
NotesException: Invalid universal id 
    lotus.domino.local.Database.NgetDocumentByUNID(Native Method) 
    lotus.domino.local.Database.getDocumentByUNID(Unknown Source) 
    com.ibm.xsp.model.domino.DominoUtils.getDocumentById(DominoUtils.java:456) 
    com.ibm.xsp.model.domino.DominoUtils.getDocumentById(DominoUtils.java:477) 
    com.ibm.xsp.model.domino.DominoDocumentData.doOpenDocument(DominoDocumentData.java:489) 
    com.ibm.xsp.model.AbstractDocumentDataSource.openDocument(AbstractDocumentDataSource.java:148) 
    com.ibm.xsp.model.AbstractDocumentDataSource.load(AbstractDocumentDataSource.java:100) 
    com.ibm.xsp.model.AbstractDataSource.getDataContainer(AbstractDataSource.java:474) 
    com.ibm.xsp.model.domino.DominoDocumentData.getDataObject(DominoDocumentData.java:145) 
    com.ibm.xsp.model.AbstractDataSource.pushData(AbstractDataSource.java:576) 
    com.ibm.xsp.util.DataPublisher.publishControlData(DataPublisher.java:181) 
    com.ibm.xsp.component.UIViewRootEx.publishControlData(UIViewRootEx.java:1288) 
    com.ibm.xsp.component.UIViewRootEx.initBeforeContents(UIViewRootEx.java:1615) 
    com.ibm.xsp.page.compiled.AbstractCompiledPage.initComponent(AbstractCompiledPage.java:333) 
    com.ibm.xsp.page.compiled.AbstractCompiledPage.createTree(AbstractCompiledPage.java:256) 
    com.ibm.xsp.page.compiled.AbstractCompiledPage.createViewRoot(AbstractCompiledPage.java:167) 
    com.ibm.xsp.application.ViewHandlerExImpl._createViewRoot(ViewHandlerExImpl.java:521) 
    com.ibm.xsp.application.ViewHandlerExImpl.createViewRoot(ViewHandlerExImpl.java:567) 
    com.ibm.xsp.application.ViewHandlerExImpl.doCreateView(ViewHandlerExImpl.java:142) 
    com.ibm.xsp.application.ViewHandlerEx.createView(ViewHandlerEx.java:90) 
    com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:251) 
    com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157) 
    com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160) 
    com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138) 
    com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576) 
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:853) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796) 
    com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565) 
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319) 
    com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662) 
    com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482) 
    com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:350) 
    com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:306) 
    com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272) 
+1

你在xOrderForm XPage上只有一个dominoDocument数据源吗?如果不止一个,错误可能与任何错误有关。同时检查ignoreRequestParams设置和其他。此外,我想很多人都假设链接打开它是从视图面板自动分配的。如果没有,请检查一下。 –

+0

IT是由未使用的文档数据源引起的。花了几个星期才发现这一点。感谢这个建议,它让我看到了我以前没有做过,也没有做过的事情。 –

回答

0

我怀疑它是顺序的问题。内存中的新文档仅获得临时UNID。一旦保存,将创建一个基于第一次保存时间的UNID。 它看起来像是在您首次保存文档之前捕获UNID以将其放置在某处。 您需要更改事件的顺序以更新UNID存储的位置。

+0

我只创建一个唯一的ID来跟踪在我存储在公共密钥字段中的视图中排序的订单和项目。我将其设置为数据网格的视图.Scope变量。视图xpage是通过列创建URL作为链接并使用订单系统创建的docID。我是否应该将该docID作为列或指示某个地方让链接正常工作? –

+0

代码规则。您需要检查何时保存UNID。如果您在保存文档之前执行该操作,则会更改。使用实际代码 – stwissel

+0

修改您的问题我使用@unique为订单和物品链接创建了10个字符的ID,但该物品并未用于该链接以外的其他任何物品。 view xpage会自动创建URL以使用Notes文档上的docID编辑文档。所以我不是“保存”文件唯一ID,而是系统驱动的。 –