在使用 MyEclipse 10.0 開發 JSP 登錄頁面時,發現 `` 中的 `return chkData()` 會被編輯器標紅報錯,導致無法正常驗證表單。經排查確認為 MyEclipse 10.0 版本 Bug,JS 解析器對 `return` 語句在內聯事件處理器中的支持存在缺陷。本文記錄問題現象、根因分析、臨時規避方案及版本選擇建議。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>管理員登錄頁面</title>
<script type="text/javascript">
function chkData() {
var frm = document.frmLogin;
if (frm.username.value === "") {
alert("請輸入用戶名。");
return false;
}
if (frm.userpassword.value === "") {
alert("請輸入密碼。");
return false;
}
return true;
}
</script>
</head>
<body>
<center>管理員登錄</center>
<form name="frmLogin" action="chkadminlogin.jsp" method="post">
<table align="center" border="1">
<tr><td>用戶名:</td><td><input type="text" name="username"/></td></tr>
<tr><td>密碼:</td><td><input type="password" name="userpassword"/></td></tr>
<tr>
<td colspan="2" align="center">
<!-- 此處 MyEclipse 10.0 編輯器會標紅報錯 -->
<input type="submit" value="登錄" onClick="return chkData();"/>
<input type="reset" value="重置"/>
</td>
</tr>
</table>
</form>
</body>
</html>
<form name="frmLogin" action="chkadminlogin.jsp" method="post" onsubmit="return chkData();">
<!-- 移除 submit 按鈕的 onClick -->
<input type="submit" value="登錄"/>
</form>
✅ 優勢:語義正確(表單提交驗證)、繞過 IDE Bug、支援 Enter 鍵提交觸發驗證、JS 與 HTML 解耦。
<input type="submit" value="登錄" onclick="var result = chkData(); return result;"/>
⚠️ 繞過解析器對 `return func()` 直接模式的誤判,但仍屬內聯寫法,不推薦長期使用。
<script>
document.addEventListener('DOMContentLoaded', function() {
document.frmLogin.addEventListener('submit', function(e) {
if (!chkData()) e.preventDefault();
});
});
</script>
<!-- 移除所有內聯 onClick/onsubmit -->
✅ 完全避開 IDE 靜態分析,符合 CSP 安全策略,便於維護測試。
Window → Preferences → Validation → JSP Syntax Validator / JavaScript Validator → 排除該文件或項目。不推薦,會掩蓋真實語法錯誤。
| 版本 | 穩定性 | 功能新度 | 建議 |
|---|---|---|---|
| MyEclipse 8.6 / 9.x | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 維護舊專案首選,兼容性最佳 |
| MyEclipse 10.x | ⭐⭐ | ⭐⭐⭐⭐ | **避坑**,Bug 多、啟動慢、內存佔用高 |
| MyEclipse 11+ / 2014/2015/2016/2017 CI | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 新專案可用,但建議遷移至標準 Eclipse + 插件 |
| Eclipse IDE (最新版) + JBoss Tools / Web Tools Platform | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 強烈推薦:社區活躍、免費、插件生態豐富、無廠商鎖定 |
| IntelliJ IDEA Ultimate | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 商業收費但體驗極致,JSP/JS/框架支援業界標桿 |
「版本越新不代表越穩定。」IDE 作為生產力工具,**穩定性 > 新功能**。遇到阻塞性 Bug 時,果斷降級或遷移工具鏈,比等待廠商修復補丁更符合交付節奏。