2013-02-20 89 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