我是网络开发的新手。我有一个外部 JavaScript 文件,它具有显示错误详细信息提示的功能。我需要将错误消息传递给函数。我已经在 servlet 中编写了控制器。
如何从我的 servlet 调用该 JavaScript 文件的函数。
我是网络开发的新手。我有一个外部 JavaScript 文件,它具有显示错误详细信息提示的功能。我需要将错误消息传递给函数。我已经在 servlet 中编写了控制器。
如何从我的 servlet 调用该 JavaScript 文件的函数。
不能从 servlet 调用 java 脚本函数。相反,您可以使用打印 javascript 代码
response.getOutputStream().println("[javascript code]");
进入浏览器,然后javascript函数将在浏览器中执行。
您可以使用以下方法实现类似的行为。在发送响应本身时,您可以提供 JS 事件。
PrintWriter out = response.getWriter();
out.println("<tr><td><input type='button' name='Button' value='Search' onclick=\"searchRecord('"+ argument + "');\"></td></tr>");
所以当你点击搜索按钮时,会调用JS的搜索记录方法。
您需要了解 servlet 运行在 Web 服务器中,而不是 Web 浏览器中,并且 JS 运行在 Web 浏览器中,而不是 Web 服务器中。通常的做法是让 servlet 将请求转发到JSP文件,该文件依次生成 HTML/CSS/JS 代码,这些代码由网络服务器发送到网络浏览器。最终,所有 HTML/CSS/JS 代码都在网络浏览器中执行。
要实现您的(有点奇怪,tbh)功能要求,只需让转发的 JSP 有条件地呈现特定的脚本调用。以JSTL 为例<c:if>
,假设您已收集并设置错误为${errors}
JSON 数组格式:
<c:if test="${not empty errors}">
<script>displayErrors(errors);</script>
</c:if>
或者让JSP把它赋值为JS变量,让JS进一步处理。就像是:
<script>
var errors = ${errors};
if (errors.length) {
displayErrors(errors);
}
</script>
至于奇怪的需求,如果你被迫使用JS来显示消息,那只能意味着你正在使用analert()
或其他东西。这是非常 90 年代的,对用户不友好。只需让 JSP 相应地生成 HTML,将它们放在输入字段旁边或表单顶部的列表中。我们的 servlets wiki 页面有一个 hello world 示例,它就是这样做的。