累積多專案 Struts 開發血淚經驗,整理 9 大高頻踩坑點與最佳實踐,涵蓋前後端交互、配置陷阱、資料型別、JS 技巧。
開啟新視窗(如 showModalDialog)無法直接操作父頁面 DOM。解法:URL 帶參數 ?PHONE_LIST_ID=123,子頁面 <input type="hidden" value="<%=request.getParameter("PHONE_LIST_ID")%>">。
<html:hidden> 在 WebSphere 失效JBoss 正常,WebSphere 報錯。改用原生 <input type="hidden"> 相容性最佳。根因待深究,先記錄規避。
name 屬性 → ActionForm 為 null<action path="..." type="..." name="xxxForm" scope="request"> 缺 name 導致 FormBean 不注入,Action 端 getXxxForm() 回傳 null。配置屬性作用需熟記。
用 <input type="text"> 而非 <html:text>,Struts 無法綁定,setXxx() 不生效。務必使用 Struts 標籤庫。
DB 欄位 CHAR(2) 存 '1' 實際含尾隨空格。三解法:
TRIM(col)substring() 或 trim()function getRadioValue(radioObj) {
for (var i=0; i
注意:找到即 break 退出迴圈繼續執行,別用 return 直接離開函式(視語境而定)。
\\\" → \\\\\"" 替代引號範例:document.write("<span style=\"width:100\" onclick=alert("test") onmouseover='status=\"abcd\\\"defg\\\"hijk\"'>test</span>");
| 模式 | 後端回應 | 前端處理 |
|---|---|---|
| 回傳 JSP 片段 | Forward 到 JSP | div.innerHTML = responseText |
| 回傳 HTML 字串 | 直寫 PrintWriter | div.innerHTML = responseText |
| 回傳資料模型 | 存入 request/session | JSP/標籤庫解析顯示 |
// 前端
var pars = encodeURI(Form.serialize(document.forms[0]));
// 後端
private String urlDecode(String str) {
return java.net.URLDecoder.decode(str, "UTF-8");
}
未解碼中文會亂碼;form.submit() 無編碼則不需解碼。