在Java中调用JavaScript函数

时间:2014-04-11 22:00:33

标签: java javascript scriptengine javascript-engine

我试图在Java项目中使用javascript代码发送电子邮件。数据库连接工作正常,我已经测试过了。我收到了错误: 在第1行的正式参数(#1)之后 javax.script.ScriptException:sun.org.mozilla.javascript.internal.EvaluatorException:missing)

3 个答案:

答案 0 :(得分:2)

唯一的相关信息不易报告: final JavaScript字符串已执行。调试时一定要查看相关数据。在检查完最后一个字符串后,很明显为什么它是不正确的,并且很容易修复"。

提示:它看起来像function sendMail(userblah, foo@bar.qux) { ..,确实是无效的 JavaScript。

问题和解决方案应该是不言而喻的 - 在函数声明中使用固定的参数(变量名)并通过invokeFunction调用提供参数(值)


解决方案:

// The following parameter names are JAVASCRIPT variable names.
String script = "function sendMail(username, email, body) { ..";

// And pass correct arguments (values), in order. The variables used
// here are JAVA variables, and align by-position with the JS parameters.
inv.invokeFunction("sendMail", username, email, "EMAIL SENT!!!!");

此外,getElementById(无效ID)错误,永远不会使用body参数,应使用encodeURIComponent(而不是escape)。< / p>

答案 1 :(得分:0)

不确定这是否是拼写错误:

    result = request.executeQuery("SELECT user.login, user.email "
                    + "FROM user " + );

看起来你错过了陈述的结尾。

答案 2 :(得分:0)

嗯,你的功能定义:

function sendMail("username","email") {...}

对我来说看起来不像是有效的JavaScript,除此之外,你永远不会调用该函数。

伪代码,怎么做:

function sendMail(username, email) {
    var link = "jadajada" + email; // .... etc
}
sendMail("+username+","+email+");