从JSP变量向Javascript发送回调函数

从JSP变量向Javascript发送回调函数,java,javascript,jquery,jsp,Java,Javascript,Jquery,Jsp,我有一个关于使用回调函数的javascript方法的问题。 我有一个jsp,在这里我定义了一个要调用的回调函数 <c:set var="callbackMethod" value="dispatchRFQDocument.loadDocumentGroup" scope="request"/> 有什么建议吗 注意。您可以像以前一样将回调方法直接传递给openDocumentsDialog() var initListener = function () { $('#doc

我有一个关于使用回调函数的javascript方法的问题。 我有一个jsp,在这里我定义了一个要调用的回调函数

 <c:set var="callbackMethod" value="dispatchRFQDocument.loadDocumentGroup" scope="request"/>
有什么建议吗


注意。

您可以像以前一样将回调方法直接传递给
openDocumentsDialog()

var initListener = function () {
    $('#documentComponentLinkId').click(function () {
        documentDialog.openDocumentsDialog(${callbackMethod});
    });
};

您正在将变量callbackMethod设置为字符串

实际上,您必须将其设置为函数定义,而不是这样做

我认为下面的方法很好:

var callbackMethod=dispatchRFQDocument.loadDocumentGroup


没有定义js变量?。这是怎么可能的?如果我像以前那样定义变量,我会出现错误“error callback()不是函数”。那么,在定义
initListener
之前,您是否确保
dispatchRFQDocument.loadDocumentGroup
存在?而且,不需要仅为赋值声明JS变量。这不是Javascript可以理解的语法${callbackMethod}。我在这里遗漏了什么?。thx当浏览器接收到该JSP文件时,${callbackMethod}将已被实际的JS函数调用替换。在将HTML响应发送到浏览器之前,这将在服务器上发生。JSP就是这样工作的,所以没有问题。是的,您的IDE可能会抱怨语法突出显示问题,因为JS不理解
{}
,但所有这些都像一个模板文件,最终在浏览器上呈现什么(在占位符值
${}
被替换后)确定它是否是正确的语法。为了测试,编写
警报(dispatchRFQDocument.loadDocumentGroup);
在将方法传递给init侦听器之前,确保方法存在。我这样做了,并警告(callbackMethod)返回“dispatchRFQDocument.loadDocumentGroup”问题是,当我声明为变量不再是函数时,Paul,您不理解。暂时忘记JS变量,因为它只是一个字符串。为了使它最终工作,必须将
dispatchRFQDocument.loadDocumentGroup
作为JS函数对象存在(不是作为字符串,而是作为JS函数对象)。所以,当我要求您发出
警报时(dispatchRFQDocument.loadDocumentGroup);
我的意思就是写这个函数,因为这个函数似乎不存在,并且将输出
[未定义]
。你需要先解决这个问题。好的,但问题是我需要将这个变量从一个页面传递到另一个页面。我使用的是模块模式,变量必须是页面的一部分。我不能使用表单js,它是从包含该变量的页面中定义的一个变量。而这个页面是一个通用组件和粘贴,不能使用ReferenceError:dispatchRFQDocument未定义var callbackMethod=dispatchRFQDocument.LoadDocumentGroup首先必须确保所需的方法存在于给定范围内。如果不存在,则必须访问该方法(如果专用)通过模块的特权方法。模块的内部特权方法可以访问其私有变量和私有方法,因为它们位于其静态范围内。
   <script>
         var callbackMethod = "${callbackMethod}";
   </script>
var initListener = function () {
    $('#documentComponentLinkId').click(function () {
        documentDialog.openDocumentsDialog(callbackMethod);
    });
};
var initListener = function () {
    $('#documentComponentLinkId').click(function () {
        documentDialog.openDocumentsDialog(${callbackMethod});
    });
};