2012-04-21 72 views
5

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

如何从我的servlet调用该JavaScript文件的功能。

+0

你的问题没有意义。 JavaScript在en用户的浏览器中执行。一个servlet在服务器上执行。重新思考你真正想做什么。 – 2012-04-21 11:18:31

+1

@JBNizet我想我们可以从servlet调用JS。我们可以将响应发送给浏览器,并且我们可以创建脚本来调用。 – Ved 2012-04-21 11:39:33

回答

5

从servlet中调用java脚本函数是不可能的。相反,你可以打印使用

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

到浏览器的JavaScript代码,然后JavaScript函数会在浏览器中执行。

+0

这对我不起作用:(它只是简单地在浏览器上打印出java脚本,并且不会对这段代码产生任何影响。请帮助。这就是我正在做的, \t response.getOutputStream()。println ( “VAR PS = document.getElementsByClassName(\” 消息\ “);” \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t +“PS。innerHtm = \“DONE \”“); – 2014-04-05 15:22:55

+0

您必须使用script标记以及您的java脚本代码,如response.getOutputStream()。println(”“); – 2016-04-04 04:22:15

2

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

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

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

1

你要明白,一个servlet在Web服务器上运行,而不是在web浏览器和JS运行在网页浏览器,而不是在网络服务器。通常的做法是让servlet将请求转发给一个JSP文件,该文件依次生成HTML/CSS/JS代码,由Web服务器将其发送到Web浏览器。最终,所有HTML/CSS/JS代码都会在网页浏览器中执行。

为了实现您的(有点奇怪的,tbh)功能需求,只需让转发的JSP有条件地呈现特定的脚本调用。举例来说,如JSTL<c:if>如下,假设你收集,并设置错误,以JSON格式数组${errors}

<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显示消息,那只能意味着你使用的是alert()什么的。这是非常90年代,不友好用户。让JSP相应地生成HTML,将它们放在输入字段旁边,或放在表单顶部的列表中。 Our servlets wiki page有一个hello世界的例子,它的确如此。