2013-03-06 83 views
0

我想重寫文件上傳控件的上傳功能,以添加我需要的功能。我試圖通過改變第二個參數的類型從以下鏈接代碼適應我的情況覆蓋文件上傳控件的上傳功能

Auto-save doc after delete of attachment in File Download control?

com.ibm.xsp.component.xp.XSPFileUpload,即:

function rekOverrideFileDownloadAction(component:javax.faces.component.UIOutput, fDownload:com.ibm.xsp.component.xp.XSPFileUpload){ 

,並在mBinding的MethodBinding並通過我的文件上傳控件的名稱的代碼,即:

var mBinding = facesContext.getApplication().createMethodBinding("#{javascript:print('Uploaded');}", null); 
overrideFileDownloadAction(getComponent('fileUpload1')); 

不幸的是,發生了一個javax.faces.FacesException。

任何人都可以幫助我修改此代碼,以便在用戶上傳文件時僅打印此消息嗎?

堆棧跟蹤:

javax.faces.FacesException 
javax.faces.FacesException.<init>(FacesException.java:97) 
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:86) 
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210) 
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96) 
com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:250) 
com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:209) 
com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:204) 
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:1281) 
com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:847) 
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:1265) 
com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:653) 
com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:476) 
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341) 
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297) 
com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272) 

java.lang.NullPointerException 
com.ibm.xsp.actions.ActionGroup.invoke(ActionGroup.java:135) 
com.ibm.xsp.actions.ActionGroup.invoke(ActionGroup.java:135) 
com.ibm.xsp.application.ActionListenerImpl.processAction(ActionListenerImpl.java:60) 
javax.faces.component.UICommand.broadcast(UICommand.java:324) 
com.ibm.xsp.component.UIEventHandler.broadcast(UIEventHandler.java:366) 
com.ibm.xsp.component.UIViewRootEx.broadcast(UIViewRootEx.java:1535) 
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:307) 
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:428) 
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:94) 
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210) 
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96) 
com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:250) 
com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:209) 
com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:204) 
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:1281) 
com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:847) 
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:1265) 
com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:653) 
com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:476) 
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341) 
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297) 
com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272) 

我也注意到,如果我添加腳本的事件,例如onChange,以便創建事件處理程序不會發生異常。所以我認爲引發異常是因爲沒有事件處理程序,並導致一個空指針。現在我已經將我需要的功能添加到了onChange事件中,並且沒關係,但如果有人能告訴我是否有方法來覆蓋它,那將會很好。

預先感謝您!

+0

請,包括異常堆棧跟蹤你...... – 2013-03-07 10:19:27

+0

爲什麼不使用的onChange?有用。無論如何,您需要調用完整刷新才能上傳文件。 – 2013-03-11 20:30:28

+0

是的,這是我結束的解決方案。起初,我發現有關文件下載的片段,並嘗試使用這種方法。感謝您的評論! – kmak 2013-03-12 13:39:02

回答

0

你想做什麼?我認爲它不可能包含代碼片段(它會覆蓋下載鏈接的事件處理程序,該處理程序僅適用於上傳控件)。

也許這個片段可以幫助你:http://openntf.org/XSnippets.nsf/snippet.xsp?id=replace-attachment-when-uploading-a-new-attachment

+0

謝謝!我會看看。我還編輯了試圖澄清它的問題。我只是想知道是否有方法來重寫上傳功能的方式,片段顯示fileDownload的刪除功能。 – kmak 2013-03-08 15:01:46

+0

@kmak:上傳控件沒有可修改的事件/功能。 – 2013-03-08 19:08:10

+0

我向onChange事件添加了所需的功能,並且工作正常,但很高興知道我的第一種方法失敗的原因。感謝您的信息! – kmak 2013-03-12 13:43:55