Struts logic 標籤將條件判斷、迭代、轉向等邏輯從 Scriptlet 中剝離,提升 JSP 可讀性與維護性。
| 標籤 | 判斷條件(為真執行體) | 範例 |
|---|---|---|
logic:empty |
null / 空字串 / Collection.isEmpty() / Map.isEmpty() | <logic:empty name="userList">...</logic:empty> |
logic:notEmpty |
相反條件 | 同上 |
| 標籤 | 語意 | 關鍵屬性 |
|---|---|---|
logic:equal |
等於 | name, property, value |
logic:notEqual |
不等於 | 同上 |
logic:greaterEqual |
大於等於 | 同上 |
logic:greaterThan |
大於 | 同上 |
logic:lessEqual |
小於等於 | 同上 |
logic:lessThan |
小於 | 同上 |
動態值技巧:value 不支援標籤巢狀,用 EL 表達式 value="${bean.prop}" 解決。
| 標籤 | 語意 | 關鍵屬性 |
|---|---|---|
logic:match |
包含/前綴/後綴匹配 | name, value, location(start/end) |
logic:notMatch |
不匹配 | 同上 |
支援 header 屬性直接匹配 HTTP Header(如 User-Agent)。
logic:messagesPresent / logic:messagesNotPresent:檢查 ActionMessages/ActionErrors 是否存在,配合 html:messages 輸出logic:present / logic:notPresent:檢查 request 參數/屬性/Header 是否存在logic:forward:name 對應 struts-config.xml 全域 forwardlogic:redirect:客戶端重導向,支援參數傳遞 <logic:redirect href="https://xxx"/>logic:iterate(核心標籤)<logic:iterate id="user" name="userList">
<bean:write name="user" property="name"/><br>
</logic:iterate>
進階屬性:
indexId:索引變數名offset:起始位移length:輸出筆數巢狀迭代範例:
<logic:iterate id="user" name="userList" indexId="idx">
<bean:write name="idx"/>. <bean:write name="user" property="name"/>
<logic:iterate id="addr" name="user" property="addressList" length="3" offset="1">
<bean:write name="addr"/>
</logic:iterate>
</logic:iterate>
logic:iterate 的 name 屬性指向請求範圍內的 Collection/Map,非字串id 變數作用域隔離,內層可覆蓋外層同名變數