哇,这个标题真是满嘴了。让我解释。我有一个.jsp
页面,在这个页面上有一个 JavaScript<script ..>
元素,在 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
我知道一种使用标签(或)关闭 Java 格式化程序中的即席格式化的方法,on
但是 Eclipse 中的 JavaScript 格式化程序没有这样的选项。
解决此问题的唯一方法(读取解决方法)是强制 JavaScript 格式化程序从不扩展对象。但这在两个方面存在问题:
- 不扩展对象可能会非常混乱并导致代码极其不可读。
- 在多行上展开对象是Eclipse JavaScript 格式化程序中的默认设置。
这意味着,如果我的团队中的任何成员意外地自动格式化了.jsp
包含所描述结构的文件,则代码将静默中断。它看起来仍然像有效的 JS,并通过了构建等,但在执行时它不起作用。
有没有人对此有任何解决方案?最好的解决方案是使用 Java 格式化程序中使用的标记以某种方式禁用格式化(此解决方案无需强制执行公司/团队范围的格式化程序标准或希望没有人会意外地按 Shift+Ctrl+F)。