java - 在Java中调用JavaScript函数

标签 java javascript scriptengine javascript-engine

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

最佳答案

唯一相关的信息不容易报告:最终执行的 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(而不是逃逸)。

关于java - 在Java中调用JavaScript函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23023304/

相关文章:

javascript - 如何使用 Rhino(Java SE 6 ScriptEngine API)构建 PEG.js 0.7.0 解析器

java - 将除法方程(字符串)转换为 Double

java - `ClassCastException` when case object with `ScriptEngine`

java - 从弹出窗口刷新主窗口

java - 我的 HMACSHA1 摘要与 Twitter 的 Oauth 1.0a 内容不匹配

javascript - 如何在WP中找到特定的类

javascript - 如何找到导致 Android 中的 Cordova 应用程序崩溃的原因?

java - 在 JUnit 测试类中使用随机值

java - Runtime.exec() 在 tomcat/web 应用程序上不能正常工作

javascript - 异步上传(HTTP POST)到 Amazon S3 : why aren't I getting the right callbacks?