2014-02-18 69 views
2

如果我的代碼類似於以下內容,我可以在沒有任何問題的情況下運行它嗎?我假定Java將的JavaScript之前運行,這樣的JavaScript不會有問題,但我沒有這樣做過:是否可以在jsp中使用Java編寫JavaScript

<script type="text/javascript"> 
<% functThatOutputsJavascript() %> 
</script> 
+2

你應該可以將javascript寫入輸出寫入器。但我會推薦一種不同的方法。 – robbmj

+1

你爲什麼不試試看看它是否有效? –

+0

當然是。 JSP只是一個模板。你可以把任何你想要的模板。 –

回答

0

這是非常,非常糟糕的編程風格,但肯定的,它是可能。

我正在處理的代碼已經做了一些非常類似的事情。我想你會真正想做的事:

<script type="text/javascript"> 
    <%= functThatOutputsJavascript() %> 
</script> 

而實際上,你可以做的更差,使用Java條件語句來修改JavaScript輸出:

<script type="text/javascript"> 
    while (i > 0) { 
     <% if (serverVar)) { %> 
      console.log("Server says yes!"); 
     <% } else { %> 
      console.log("Server says no!"); 
     <% } %> 
    } 
</script> 

這則輸出此代碼,如果serverVar是真:

<script type="text/javascript"> 
    while (i > 0) { 
      console.log("Server says yes!"); 
    } 
</script> 

或此代碼,如果是假的:

<script type="text/javascript"> 
    while (i > 0) { 
      console.log("Server says no!"); 
    } 
</script> 

這是可怕的編碼風格,我希望你不會在實踐中做到這一點!如果您想知道如何避免編寫這樣的代碼,請查看以下問題:How to avoid Java code in JSP files?

一般的建議是使用JSP EL(JSP表達式語言)將服務器端變量設置到您的Javascript中,然後將所有您的JavaScript中的邏輯。

+0

謝謝。我甚至還沒有開始寫任何東西(這就是爲什麼我問),所以我會考慮避免這種風格。我可能會使用它來暫時獲得某些工作。 – EGr

+0

您需要的用例應該非常非常纖細。使用JSP Expression語言來獲得你想要的結果會更好。 – JBCP

相關問題