2013-02-20 86 views
2

我使用Edraw Office Viewer組件打開&編輯文件。我想將我的文件保存到我的目的地點,所以我使用JavaScript來保存文件。但我堅持一點。我在下面顯示我的代碼以使用JavaScript保存文檔。如何在ZK MVVM中使用javascript調用java方法?

function f_saveDocument(){ 
    if(document.OA1.IsOpened)   
    { 
    var saveAsFileName = document.getElementById('hdnFileName').value; 
    alert(saveAsFileName); 
     var fileFormat = saveAsFileName.substring(saveAsFileName.lastIndexOf(".")); 
     if(fileFormat == '.docx') { 
      var toUnLockFile = 'MergeTest'+fileFormat; 
      var tempFileLocation = document.OA1.GetTempFilePath(saveAsFileName); 
      var tempToUnLockFileLocation = document.OA1.GetTempFilePath(toUnLockFile); 
      document.OA1.SaveAs(tempFileLocation,12); 
      document.OA1.SaveAs(tempToUnLockFileLocation,12); 
      document.OA1.HttpInit(); 
      document.OA1.HttpAddPostFile(tempFileLocation); 
       document.OA1.HttpPost(""); 
      document.OA1.ClearTempFiles(); 
     } else { 
     alert("asdsa"); 
      document.OA1.HttpInit(); 
      document.OA1.HttpAddPostOpenedFile(saveAsFileName); 
      **zAu.send(new zk.Event(zk.Widget.$('$btnSave'), "saveFile", {'' : {'data' : {'nodeId': ''}}}, {toServer:true}));** 
     alert("moved"); 
     } 

    } 

在JSP頁面的情況下,我可以把我的JSP的URL在HttpPost但在ZK的情況下,如何從這個JavaScript到Java方法移動。所以要解決這個問題,我正在使用Widget調用saveFile()方法,該方法位於我的viewmodel類中。但是zAu.send工作不正常。任何人都可以告訴其他解決方案在ZK MVVM中通過JavaScript調用我的Java方法。

回答

3

你的代碼是完全錯誤的

zAu.send(new zk.Event(zk.Widget.$('$btnSave'), "onSaveFile", {'' : {'data' : {'nodeId': ''}}}, {toServer:true})); 

事件名稱必須與on開始所以這將觸發一個onSaveFile
事件到Component id爲btnSave。只需要listen就可以了。

+0

感謝Nabil的幫助! – psisodia 2013-02-20 07:08:09

+0

Nabil:我還有一個問題...有什麼辦法可以在HttpPost中傳遞zk url嗎?其實我想在MultipartRequest的java方法中獲取請求。 MultipartRequest mr = new MultipartRequest(request,savePath,50000000); – psisodia 2013-02-20 09:58:43