2012-05-25 48 views
1

最近在使用富文本字段,CKEditor的我開始收到以下錯誤試圖運行任何樣的行動是提交的富文本值:富文本字段引起DominoDocument.setValue()錯誤

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代碼似乎部分解決了這個問題(這是日誌代碼處於第一位的地方)。

但是這仍然是黑客行爲,我想知道開始時出了什麼問題。

這似乎以某種方式連接到DominoRichTextItem的FieldValueHolder的狀態(其操作領域被設置,而不是要替換補充!?)

任何人可以幫助?

+0

'造成的:NotesException:注意項目不found' - 你訪問什麼項目? –

+0

它不是我 - 它試圖關閉MIME實體的xpages邏輯。我只對豐富文本週圍的區域進行部分更新。 –

+0

哪些代碼調用了「字段rt中的DominoDocument.setValue()」?此代碼必須考慮到DominoDocument可能不存在。 –

回答

1

我發現了問題的根源。我看來,如果您從文檔數據源中刪除formName屬性,副作用就是這種異常和消失的附件。

這個迴歸被引入到我的應用程序中,同時添加了一些文檔響應功能(表單是在事件中計算的,因此有人丟棄了formName屬性)。更糟糕的是,附件的問題被調試代碼中的一些getDocument(true)調用遮蔽了。

如果XSP編譯提到,窗體名稱是強制性的屬性,這將是很好...

+0

謝謝,因爲這個,得到的不一致的錯誤,你的建議解決了它。 – ProgrammerDan

0

如果您對不存在的文檔調用REPLACE,則會出現錯誤,並在刪除代碼以檢查是否呈現它時發生錯誤,聽起來好像問題是文檔不會不存在。

你檢查了嗎?還使用了豐富的文本項的最簡單的方法就是將其綁定到一個字段

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

這可能並不總是可能的,但它得到了這樣的問題,其中的自定義代碼導致錯誤。

+0

該字段在您的示例中是綁定的。該文件不應該存在,因爲這是一個新的文件:)。而這個錯誤只發生在richtext存在的情況下。如果我將richtext更改爲正常編輯框,一切正常。 –

+0

當您首先使用空的富文本字段保存文檔,然後對其進行編輯時,所有內容都應該沒問題。 –

+0

@ D.Bugger - 你說得對,你是怎麼知道的? –