1

最近在使用富文本字段和 ckeditor 时,我在尝试运行任何提交富文本值的操作时开始收到以下错误:

com.ibm.xsp.FacesExceptionEx: Notes exception thrown while calling DominoDocument.setValue() on field rt
at com.ibm.xsp.model.domino.wrapped.DominoDocument.setValue(DominoDocument.java:1465)
at com.ibm.xsp.el.PropertyResolverImpl.setValue(PropertyResolverImpl.java:206)
at com.sun.faces.el.impl.ArraySuffix.setValue(ArraySuffix.java:201)
at com.sun.faces.el.impl.ComplexValue.setValue(ComplexValue.java:180)
at com.sun.faces.el.ValueBindingImpl.setValue(ValueBindingImpl.java:206)
at com.ibm.xsp.component.UIInputEx.updateModel(UIInputEx.java:573)
at javax.faces.component.UIInput.processUpdates(UIInput.java:484)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at com.ibm.xsp.component.UIDataPanelBase.processUpdates(UIDataPanelBase.java:351)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at com.ibm.xsp.component.UIDataPanelBase.processUpdates(UIDataPanelBase.java:351)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at com.ibm.xsp.component.UIDataPanelBase.processUpdates(UIDataPanelBase.java:351)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at com.ibm.xsp.component.UIDataPanelBase.processUpdates(UIDataPanelBase.java:351)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at com.ibm.xsp.component.UIDataPanelBase.processUpdates(UIDataPanelBase.java:351)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at com.ibm.xsp.component.UIDataPanelBase.processUpdates(UIDataPanelBase.java:351)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at com.ibm.xsp.component.UIDataPanelBase.processUpdates(UIDataPanelBase.java:351)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIForm.processUpdates(UIForm.java:222)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1244)
at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:406)
at com.ibm.xsp.component.UIViewRootEx._processUpdates(UIViewRootEx.java:1513)
at com.ibm.xsp.component.UIViewRootEx.processUpdates(UIViewRootEx.java:1492)
at com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:98)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)
at com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:250)
at com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:223)
at com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:200)
at com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
at com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:137)
at com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
at com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576)
at com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1267)
at com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:847)
at com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796)
at com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565)
at com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1251)
at com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:598)
at com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:421)
at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341)
at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297)
at com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)

Caused by: NotesException: Note item not found
at lotus.domino.local.Document.closeMIMEEntities(Unknown Source)
at com.ibm.xsp.model.domino.wrapped.DominoRichTextItem.closeMIMEEntities(DominoRichTextItem.java:2531)
at com.ibm.xsp.model.domino.wrapped.DominoDocument.getRichTextField(DominoDocument.java:1979)
at com.ibm.xsp.model.domino.wrapped.DominoDocument.createRTFieldWithValue(DominoDocument.java:1998)
at com.ibm.xsp.model.domino.wrapped.DominoDocument.setValue(DominoDocument.java:1382)
... 60 more

有谁知道什么可能导致这种行为?我的设计非常复杂,过度使用扩展库,这个错误在某个时候突然出现。我无法指出是什么原因造成的,因为它被我不必要地称为 DominoDocument.getDocument(true) 的日志代码部分遮盖了。

删除此调用后,此错误开始出现。将仲裁调用 DominoDocument.getDocument(true) 添加到随机“渲染”属性 ssjs 代码似乎部分解决了这个问题(这是日志代码首先出现的地方)。

但这仍然是hack,我想知道一开始出了什么问题。

这似乎与 DominoRichTextItem 的 FieldValueHolder 的状态有关(其操作字段设置为 REPLACE 而不是 ADD !?)

有人可以帮忙吗?

4

2 回答 2

1

我找到了问题的根源。我似乎认为,如果您从文档数据源中删除 formName 属性,则副作用是此异常和附件消失。

这个回归被引入到我的应用程序中,同时添加了一些文档响应功能(表单是在事件中计算的,所以有人扔掉了 formName 属性)。更糟糕的是,附件的问题被调试代码中的一些 getDocument(true) 调用所掩盖。

如果 xsp 编译器提到 formName 是强制性属性,那就太好了...

于 2012-06-12T14:41:27.903 回答
0

如果您在不存在的文档上调用 REPLACE,您将收到一个错误,并且在您删除代码以检查是否呈现它之后发生错误,听起来好像问题是文档不存在。

你检查过这个吗?使用富文本项的最简单方法就是将其绑定到字段

e.g.  value="#{dominoDoc.body}"

这可能并不总是可能的,但它克服了自定义代码导致错误的此类问题。

于 2012-05-25T12:35:48.747 回答