深入分析JavaWeb Item49 -- Struts2中常用標籤與主題
一、非UI標籤1、property標籤
property標籤用於輸出指定值:
* default:可選屬性, 如果需要輸出的屬性值為null,則顯示該屬性指定的值
* escape:可選屬性,指定是否格式化HTML代碼。
* value: 可選屬性,指定需要輸出的屬性值,如果沒有指定該屬性,則預設輸出ValueStack棧頂的值。
2、set標籤
set標籤用於將某個值放入指定範圍。
var:變數的名字,name,id和var表達的含義是一樣的,name,id被var替代
scope:指定變數被放置的範圍,該屬性可以接受application、session、request、 page或action。如果沒有設定該屬性,則預設放置在值棧的context中。
value:賦給變數的值.如果沒有設定該屬性,則將ValueStack棧頂的值賦給變數。
或者:
3、push標籤
push:將對象放入棧頂,不能放入其他範圍,當標籤結束,會從棧頂刪除。
value:要push到堆棧中的值 。
測試刪除:
4、bean標籤(瞭解)
bean標籤: 執行個體化一個符合JavaBeans規範的class,標籤體內可以包含幾個Param元素,用於調用setter方法給此class的屬性賦值.
name:要被執行個體化的class名字(必須符合JavaBeans規範)
var: 賦給變數的值.放置在request範圍中如果沒有設定該屬性,則對象被放置到棧頂
5、action標籤
Action:通過指定命名空間和action名稱,該標籤允許在jsp頁面直接調用Action
name:action名字(不包括尾碼,如.action)
namespace:action所在命名空間
executeResult:Action的result是否需要被執行,預設值是false不執行
/ognl/ongl.jsp?msg=${msgxx}
6、iterator標籤
Iterator:標籤用於對集合進行迭代,這裡的集合包含List、Set和數組。
value:可選屬性,指定被迭代的集合,如果沒有設定該屬性,則使用ValueStack棧頂的集合。
var: 可選屬性,引用變數的名稱.
status:可選屬性,該屬性指定迭代時的IteratorStatus執行個體。該執行個體包含如下幾個方法:
int getCount(),返回當前迭代了幾個元素。int getIndex(),返回當前迭代元素的索引。boolean isEven(),返回當前被迭代元素的索引是否是偶數boolean isOdd(),返回當前被迭代元素的索引是否是奇數boolean isFirst(),返回當前被迭代元素是否是第一個元素。boolean isLast(),返回當前被迭代元素是否是最後一個元素。
Action類,組織allList集合for(int i=0;i<10;i++){ Person p=new Person(); p.setId(i); p.setName("tom"+i); p.setAge(20+i); allList.add(p);}ServletActionContext.getRequest().setAttribute("allList", allList);
st下的屬性在:org.apache.struts2.views.jsp.IteratorStatus類下
st.getCount(): st.getIndex(): st.isEven(): st.isOdd(): st.isFirst: st.isLast():
----------------s:property(重點)------------------
----------------s:set------------------
----------------s:push把對象壓入棧頂,接著彈棧.要想看:需要把s:debug放入標籤內部------------------
----------------s:bean------------------
<% Enumeration e = request.getAttributeNames(); while(e.hasMoreElements()){ String name = (String)e.nextElement(); out.write(name+"="+request.getAttribute(name)+"
"); } %>
----------------s:iterator迭代(重點)------------------
| 姓名 |
性別 |
薪水 |
| ${p.nickname} |
|
${p.salary} |
| 姓名 |
性別 |
薪水 |
| ${nickname} |
|
${salary} |
| 姓名 |
性別 |
薪水 |
">
| ${p.nickname} |
|
${p.salary} |
----------------s:if else if(重點)------------------
優秀 良好 尚需努力 ">猛點
二、UI標籤
表單標籤將在 HTML 文檔裡被呈現為一個表單元素
使用表單標籤的優點:
表單回顯對頁面進行布局和排版
標籤的屬性可以被賦值為一個靜態值或一個 OGNL 運算式. 如果在賦值時使用了一個 OGNL 運算式並把它用 %{} 括起來, 這個運算式將會被求值.
表單標籤的共同屬性
主要的一些標籤是fZ喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcm0gserHqaGidGV4dGZpZWxkLCBwYXNzd29yZCwgaGlkZGVuILHqx6mhonN1Ym1pdCCx6sepoaJyZXNldCCx6sepIDxicj4KoaJsYWJlbCCx6sepoaJ0ZXh0YXJlYSCx6sepoaJjaGVja2JveCCx6sepoaJjaGVja2JveGxpc3QgserHqaGicmFkaW8gserHqaGic2VsZWN0ILHqx6mho77fzOXTptPDv8nS1LLOvPtBUEnOxLW1o6wg1eLA79LU0ru49r7fzOW1xMq1wP3Iq7K/1bnP1rP2wLQ8L3A+CgoKCjxwcmUgY2xhc3M9"brush:java;"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s"%> UI標籤的使用
三、主題
主題: 為了讓所有的 UI 標籤能夠產生同樣的視覺效果而歸集到一起的一組模板. 即風格相近的模板被打包為一個主題
1、simple: 把 UI 標籤翻譯成最簡單的 HTML 對應元素, 而且會忽視行標屬性
2、xhtml: xhtml 是預設的主題. 這個主題的模板通過使用一個表格版面配置提供了一種自動化的排版機制.(預設值)
3、css_xhtml: 這個主題裡的模板與 xhtml 主題裡的模板很相似, 但它們將使用 css 來進行布局和排版
4、ajax: 這個主題裡的模板以 xhtml 主題裡德模板為基礎, 但增加了一些 Ajax 功能.
1、修改主題:
A、通過 UI 標籤的 theme屬性(只適用於當前的標籤)
B、在一個表單裡, 若沒有給出某個 UI 標籤的 theme 屬性, 它將使用這個表單的主題
(適用於整個form標籤)
C、修改 struts.properties 檔案中的 struts.ui.theme 屬性. (適用整個環境)
優先順序:A>B>C
2、struts2標籤自動回顯