5

我是网络开发的新手。我有一个外部 JavaScript 文件,它具有显示错误详细信息提示的功能。我需要将错误消息传递给函数。我已经在 servlet 中编写了控制器。

如何从我的 servlet 调用该 JavaScript 文件的函数。

4

3 回答 3

5

不能从 servlet 调用 java 脚本函数。相反,您可以使用打印 javascript 代码

response.getOutputStream().println("[javascript code]");

进入浏览器,然后javascript函数将在浏览器中执行。

于 2012-04-21T11:18:39.843 回答
2

您可以使用以下方法实现类似的行为。在发送响应本身时,您可以提供 JS 事件。

PrintWriter out = response.getWriter();
out.println("<tr><td><input type='button' name='Button' value='Search' onclick=\"searchRecord('"+ argument + "');\"></td></tr>");

所以当你点击搜索按钮时,会调用JS的搜索记录方法。

于 2012-04-21T11:30:26.403 回答
2

您需要了解 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 示例,它就是这样做的。

于 2012-04-21T12:52:25.477 回答