哇,標題相當滿口。讓我解釋。我有一個.jsp
頁面,在這個頁面上是一個JavaScript <script ..>
元素,在JavaScript裏面有一個EL表達式(${..}
)。代碼如下所示:Eclipse格式化在JavaScript腳本中打破EL表達式
<script type="text/javascript">
jQuery(document).ready(function() {
var HOST_ID = ${host.id};
...
});
</script>
問題:
Eclipse的JavaScript的格式將每默認擴展${host.id}
多行。我在猜測,EL表達式在某種程度上被解釋爲一個JavaScript對象。反正,標籤將結束這樣看:
var HOST_ID = $
{
host.id
}
;
=>這實際上打破了代碼!
如果拆分多行,標籤不再被識別爲有效的EL表達式,並且JavaScript代碼的執行將停止拋出異常。
我知道關於使用標籤(// @formatter:off
或on
)關閉Java格式化程序中的格式化adhoc的方法,但Eclipse中的JavaScript格式化程序沒有這種選項。
修復(閱讀解決方法),這是對JavaScript格式化強制從未擴大對象的唯一方法。但這在兩個方面有問題:
- 不擴展對象可能非常混亂,導致代碼非常不可讀。
- 在Eclipse JavaScript格式化程序中,多行擴展對象是默認。
這意味着,如果我的團隊的任何成員偶然自動格式化包含所描述的構造的.jsp
文件,則代碼將無聲無息地破壞。它仍然看起來像有效的JS,並傳遞構建等,但在執行時它不會工作。
有沒有人有任何解決方案呢?最好的解決方案是以某種方式禁用格式化,比如Java格式化程序中使用的標記(此解決方案無需執行公司/團隊範圍的格式標準或希望沒有人會意外地按Shift + Ctrl + F)。
這不是JSTL。那是EL。 JavaScript也不是一個scriptlet。我修正了錯誤的術語。要了解JSTL究竟是什麼,請閱讀http://stackoverflow.com/tags/jstl/info要了解scriptlet的真實含義,請閱讀http://stackoverflow.com/tags/scriptlet/info – BalusC
謝謝。在一個環境中使用JSP/Java/Struts2/JavaScript時,我被所有不同的標籤大量混淆...... :) – fgysin