首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Struts 實戰開發心得總結(一):跨頁面參數傳遞、html:hidden 坑、ActionForm 綁定、char 型別空格、Checkbox 處理、巢狀引號、AJAX 交互模式

     編輯:Java 相關知識

累積多專案 Struts 開發血淚經驗,整理 9 大高頻踩坑點與最佳實踐,涵蓋前後端交互、配置陷阱、資料型別、JS 技巧。

1. 跨頁面參數傳遞:URL 參數優於 Hidden 域

開啟新視窗(如 showModalDialog)無法直接操作父頁面 DOM。解法:URL 帶參數 ?PHONE_LIST_ID=123,子頁面 <input type="hidden" value="<%=request.getParameter("PHONE_LIST_ID")%>">。

2. <html:hidden> 在 WebSphere 失效

JBoss 正常,WebSphere 報錯。改用原生 <input type="hidden"> 相容性最佳。根因待深究,先記錄規避。

3. struts-config.xml 漏寫 name 屬性 → ActionForm 為 null

<action path="..." type="..." name="xxxForm" scope="request"> 缺 name 導致 FormBean 不注入,Action 端 getXxxForm() 回傳 null。配置屬性作用需熟記。

4. 前端未用 Struts HTML 標籤 → ActionForm set 失效

用 <input type="text"> 而非 <html:text>,Struts 無法綁定,setXxx() 不生效。務必使用 Struts 標籤庫。

5. CHAR 型別隱形空格陷阱

DB 欄位 CHAR(2) 存 '1' 實際含尾隨空格。三解法:

  1. 設計階段:定長才用 CHAR,其餘用 VARCHAR2
  2. SQL 層:TRIM(col)
  3. Java 層:substring() 或 trim()

6. Checkbox/Radio 陣列處理:單選用 break,非 return

function getRadioValue(radioObj) {
    for (var i=0; i

注意:找到即 break 退出迴圈繼續執行,別用 return 直接離開函式(視語境而定)。

7. 巢狀引號管理四原則

  1. 抽函式減少引號層級
  2. 單引號包雙引號、雙引號包單引號,免轉義
  3. 轉義符可無限巢狀:\\\" → \\\\\"
  4. 用 &quot; 替代引號

範例:document.write("<span style=\"width:100\" onclick=alert("test") onmouseover='status=\"abcd\\\"defg\\\"hijk\"'>test</span>");

8. AJAX 三種回應模式

模式後端回應前端處理
回傳 JSP 片段Forward 到 JSPdiv.innerHTML = responseText
回傳 HTML 字串直寫 PrintWriterdiv.innerHTML = responseText
回傳資料模型存入 request/sessionJSP/標籤庫解析顯示

9. Form.serialize() 大表單序列化 → 後端需 URLDecode

// 前端
var pars = encodeURI(Form.serialize(document.forms[0]));

// 後端
private String urlDecode(String str) {
    return java.net.URLDecoder.decode(str, "UTF-8");
}

未解碼中文會亂碼;form.submit() 無編碼則不需解碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved