如果我的代碼類似於以下內容,我可以在沒有任何問題的情況下運行它嗎?我假定Java將的JavaScript之前運行,這樣的JavaScript不會有問題,但我沒有這樣做過:是否可以在jsp中使用Java編寫JavaScript
<script type="text/javascript">
<% functThatOutputsJavascript() %>
</script>
如果我的代碼類似於以下內容,我可以在沒有任何問題的情況下運行它嗎?我假定Java將的JavaScript之前運行,這樣的JavaScript不會有問題,但我沒有這樣做過:是否可以在jsp中使用Java編寫JavaScript
<script type="text/javascript">
<% functThatOutputsJavascript() %>
</script>
這是非常,非常糟糕的編程風格,但肯定的,它是可能。
我正在處理的代碼已經做了一些非常類似的事情。我想你會真正想做的事:
<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中的邏輯。
你應該可以將javascript寫入輸出寫入器。但我會推薦一種不同的方法。 – robbmj
你爲什麼不試試看看它是否有效? –
當然是。 JSP只是一個模板。你可以把任何你想要的模板。 –