【问题标题】:Call Java Function using JSNI from servlet使用 JSNI 从 servlet 调用 Java 函数
【发布时间】:2011-01-19 13:37:11
【问题描述】:

我已经创建了 JSNI 方法,我正在使用另一个方法注册“createCallbackFunction”方法

createCallbackFunction(new NTFileUploadUtil());


public void uploadComplete(String fileId){
    SC.say("I am back...with fileId:" + fileId);
    System.out.println("I am back...with fileId: " + fileId);
}


private native static void createCallbackFunction(NTFileUploadUtil obj ) /*-{
    //$wnd.alert(fileName); 
    var tmpcallback = function(fileName){        
            obj.@com.nextenders.client.ui.util.NTFileUploadUtil::uploadComplete(Ljava/lang/String;)( fileName);
    };
    alert("NTFileUploadUtil-- createCallbackFunction:\n " + tmpcallback);
    $wnd.uploadComplete=tmpcallback;
}-*/;

我来了

function (fileName) {
    __gwt_makeJavaInvoke(1)(obj, 83361821, fileName);
}

在警报中作为输出。

我试图从一个 struts 动作类中调用它

response.setContentType("text/html");

out.println("<html>");
                    out.println("<head>");
                    out.println("<script type=\"text/javascript\">");
                    out.println("function foo() { ");
                    out.println("alert('From Servlet');");
                    out.println("window.top.uploadComplete('"+ft.getId()+"');");
                    out.println("}");
                    out.println("</script>");
                    out.println("</head>");
                    out.println("<body onload=\"foo();\">");
                    out.println("</body>");
                    out.println("</html>");

但是 Javascript 没有被执行。 警报都不起作用,上传方法也没有被调用。

【问题讨论】:

  • 我没有看到您如何加载 servlet。我认为那里出了点问题,因为根本没有执行 javascript。
  • @KRASH:感谢回复

标签: gwt smartgwt jsni


【解决方案1】:
    PrintWriter out;
    out = response.getWriter();
    response.setContentType("text/html");       
    out.println("<html>");
    out.println("<head>");
    out.println("<script type=\"text/javascript\">");
    out.println("function foo() { ");
    //out.println("alert('From Servlet');");
    out.println("window.top.uploadComplete('"+transId+"');");
    out.println("}");
    out.println("</script>");
    out.println("</head>");
    out.println("<body onload=\"foo();\">");
    out.println("</body>");
    out.println("</html>");

【讨论】:

  • 我试图从 struts 动作类生成响应。所以,它不起作用,但是一旦我使用了 servlet。它工作..
猜你喜欢
  • 1970-01-01
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-22
  • 1970-01-01
  • 2014-06-21
相关资源
最近更新 更多