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

Struts2 圖片按鈕標籤路徑問題解決方案:改用原生 HTML input 模擬 action/method 功能

     編輯:Java 相關知識

Struts2 <s:submit> 標籤的 src 屬性必須包含專案根路徑(如 myroot/images/btn/btn_delete.jpg),一旦部署路徑變更,圖片即無法顯示。傳統解法 <%=request.getContextPath()%> 在 Struts2 標籤中無法直接使用。

版本演變與限制

  • Struts 2.0.11:可用 ${pageContext.request.contextPath},但強制需啟用 theme=ajax
  • Struts 2.1.2:ajax 標籤庫獨立分離,無法再使用上述變通方案

解決方案:原生 <input type="image"> + 命名慣例

分析 <s:submit> 生成的 HTML 後,發現其核心功能(指定 Action 與 Method)可透過 name 屬性的特殊命名慣例實現:

<input type="image" alt="刪除指定用戶"
       src="<%=request.getContextPath() %>/images/btn/btn_del.gif"
       id="doDelete" name="action:user!doDelete"
       class="button_image" onclick="return CheckSelectForDelete();" />

關鍵點:將 action 與 method 合併為 name="action:ActionName!methodName" 格式,Struts2 的預設處理機制會自動解析並路由至對應 Action 的方法。其他屬性(src、onclick、class 等)照常使用。

優勢

  1. 徹底解決路徑問題:可靈活使用 request.getContextPath() 或 JSTL <c:url> 生成正確相對路徑
  2. 不依賴特定 theme 或標籤庫版本,相容性極佳
  3. 保留 Struts2 核心路由功能(Action + Method 映射)
  4. 程式碼更符合 HTML 語意,前端維護更容易

此方案簡單實用,適用於所有 Struts 2.x 版本,是處理圖片按鈕路徑問題的推薦做法。

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