2012-04-21 117 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世界的例子,它的確如此。