如何在ZK MVVM中使用javascript调用java方法?

时间:2013-02-20 05:51:19

标签: java javascript jsp mvvm zk

我正在使用Edraw Office Viewer组件打开&编辑文件。我想将文件保存到目标点,所以我使用JavaScript来保存文件。但我陷入了困境。我在下面显示我的代码以使用JavaScript保存文档。

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方法。

1 个答案:

答案 0 :(得分:4)

您的代码完全错误

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

活动名称必须以on开头,因此会触发onSaveFile 活动到Component,ID为btnSave。只需listen即可。