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

Struts2 標籤庫完整指南:通用標簽、UI 標簽與最佳實踐

     編輯:Java 綜合教學

一、通用標簽

1. <s:property> - 獲取值棧/上下文數據

<!-- 獲取值棧頂層對象屬性 -->
<s:property value="userName"/>

<!-- 獲取 List/Map 索引 -->
<s:property value="[1].userName"/>  <!-- List 索引 1 -->
<s:property value="#session.user.name"/> <!-- Session 域 -->
<s:property value="#request.attrKey"/>    <!-- Request 域 -->
<s:property value="#attr.key"/>          <-- 搜索 page/request/session/application -->

<!-- 屬性 -->
<s:property value="expr" default="默認值" escape="true|false"/>

2. <s:url> - 構建 URL

<s:url action="userAction" method="list">
    <s:param name="page" value="1"/>
</s:url>
<!-- 輸出:/context/userAction_list.action?page=1 -->

3. <s:set> - 設置變量

<s:set name="varName" value="%{expression}" scope="page|request|session|application"/>
<!-- 後續使用:${varName} 或 %{#varName} -->

4. <s:push> - 壓入值棧

<s:push value="user">
    <s:property value="name"/> <!-- 直接訪問 user.name -->
</s:push>

5. 條件控制 <s:if> <s:elseif> <s:else>

<s:if test="%{user.age > 18}">成年</s:if>
<s:elseif test="%{user.age > 12}">青少年</s:elseif>
<s:else>兒童</s:else>

6. 迭代 <s:iterator>

<s:iterator value="userList" status="stat">
    <s:property value="#stat.index"/> : <s:property value="name"/>
</s:iterator>
<!-- status 提供 index、count、first、last、even、odd -->

7. 排序 <s:sort>

<s:sort source="userList" comparator="myComparator" />

8. 日期格式化 <s:date>

<s:date name="user.birthday" format="yyyy-MM-dd" />

9. 鏈接 <s:a>

<s:a action="userAction" method="detail">
    <s:param name="id" value="%{id}"/>
    查看詳情
</s:a>

10. Action 調用 <s:action>

<s:action name="headerAction" executeResult="true" />

11. Bean 實例化 <s:bean>

<s:bean name="com.example.User" var="user">
    <s:param name="name" value="'張三'"/>
</s:bean>

12. 頁面包含 <s:include>

<s:include value="/common/header.jsp" />

13-17. 集合操作標簽

  • <s:append>:合併多個集合迭代
  • <s:merge>:交替合併迭代
  • <s:generator>:生成序列迭代
  • <s:subset>:截取集合子集

二、表單標簽(UI Tags)

核心表單標簽

標簽HTML 對應關鍵屬性
<s:form><form>action、method、theme、namespace
<s:textfield><input type="text">name、label、value、readonly
<s:password><input type="password">name、label、showPassword
<s:textarea><textarea>name、label、rows、cols
<s:select><select>list、listKey、listValue、headerKey、headerValue
<s:radio><input type="radio">name、list、listKey、listValue
<s:checkbox><input type="checkbox">name、fieldValue、value
<s:checkboxlist>多個 checkboxlist、listKey、listValue
<s:submit><input type="submit">value、action、method
<s:reset><input type="reset">value
<s:file><input type="file">name、accept
<s:hidden><input type="hidden">name、value
<s:label><label>value、for
<s:updownselect>雙選單上下移動list、listKey、listValue
<s:combobox>可編輯下拉框list、listKey、listValue
<s:doubleselect>二級聯動下拉list、doubleList、doubleListKey、doubleListValue
<s:optiontransferselect>雙列表互選list、doubleList、listKey、listValue

三、主題與模板

  • simple:無表格佈局,適合自定義 CSS
  • xhtml(默認):表格佈局,語義化標籤
  • css_xhtml:CSS 佈局,推薦生產使用
  • ajax:支持 AJAX 交互(需 Dojo 插件)

全局設置:struts.ui.theme=css_xhtml(struts.properties)

四、最佳實踐

  1. 優先使用通用標簽(<s:property>、<s:iterator>),減少 JSP 腳本代碼
  2. 表單標簽配合 theme="simple" 實現完全可控的前端樣式
  3. 複雜 UI 建議前後端分離,Struts2 僅作為 REST API 控制器
  4. 避免在 JSP 中編寫複雜 OGNL 表達式,邏輯前置到 Action
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved