簡介
- el表達式${屬性}取值順序:request>>Context>>Root
<s:XX>
標籤下的action,直接使用action名即可,不需要上下文路徑和命名空間.<s:from>
表單具有自動回寫功能.
1.通用標籤
1. 判斷
<s:if test="條件">執行體</s:if>
<!--num存於Context下的request中-->
<% request.setAttribute("num", 100); %>
<s:if test="#request.num>50">大於50</s:if>
<s:else>小於50</s:else>
2.循環
- 自行循環(val=索引)
<s:iterator begin="0" end="10" step="1" var="索引">
<!--循環輸出-->
<s:iterator begin="1" end="10" step="2" var="index">
<s:property value="#index"/>
</s:iterator><br/>
<!--輸出1 3 5 7 9-->
- 有值的循環(方式2 val=元素)
<% request.setAttribute("arr",new Integer[]{11,22,44,66,77}); %>
<!--方式1-->
<s:iterator begin="0" end="10" step="1" var="index">
${arr[index]}
</s:iterator><br/>
<!--方式2-->
<s:iterator value="#request.arr" var="val">
<s:property value="#val"/>
</s:iterator>
<!--輸出11 22 44 66 77 -->
3.超鏈接
<s:a action="" namespace="">XXX</s:a>
1. namespace=命名空間
2. action=action名
3. 在超鏈接中加入<s:param>
標籤,可以添加參數
<!--訪問 域名/上下文路徑/myPKG/123.action-->
<s:a action="123" namespace="myPKG">XXX</s:a>
<!--在網頁上輸出 XXXmyPKG/123.action -->
<s:url action="123" namespace="myPKG">XXX</s:url>
<!--添加參數 employee.id,值爲Content容器的#employee.id-->
<s:a action="XXX"><s:param name="employee.id" value="#employee.id"/>刪除</s:a>
2.表單標籤
- 普通框
隱藏框: <s:hidden name="XX" value="XX"/>
小文本框: <s:textfield name="XX" value="XX"/>
密碼框: <s:password name="XXX"/>
大文本框: <s:textarea name="xxx"/>
提交框: <s:submit name="xxx"/>
重置框: <s:reset name="XXX"/>
- 單選,複選,下拉
- headerKey=”null” ;下拉框的默認值
- headerValue=”請選擇”;下拉框的默認視圖
- multiple=”true”;下拉框展開
方式1:傳入#{Key:Value, Key:Value} key等價於每個選項的id,value等價於每個選項的文本內容
單選框
<s:radio name="XXX" list="#{'1':'選項1','2':'選項2'}"></s:radio>
複選框
<s:checkboxlist name="XXX" list="#{'1':'選項1','2':'選項2'}"/>
下拉框
<s:select name="XXX" list="#{'1':'選項1','2':'選項2'}"/>
方式2:傳入一個list(且list中都是對象)
- listKey=”id” :表示每個選項的id,是每個對象的id
- listValue=”name”:表示每個選項的文本,是每個對象的文本
Action類響應發送一個list
ActionContext ctx = ActionContext.getContext();
List<Hobby> list =new ArrayList<>();
list.add(new Hobby(1L, "籃球"));
list.add(new Hobby(2L, "乒乓球"));
list.add(new Hobby(3L, "足球"));
list.add(new Hobby(4L, "排球"));
ctx.put("list", list);
jsp
單選框
<s:radio name="XXXX" list="#list" listKey="id" listValue="name"/>
複選框
<s:checkboxlist name="XXXX" list="#list" listKey="id" listValue="name"/>
下拉框
<s:select name="XXXX" list="#list" listKey="id" listValue="name"/>
3.自動回寫功能(將對象存入Root中)
- Action類中傳遞對象
- hobbys,複選框的內容(傳入Context)
- jobs, 下拉框的內容(傳入Context)
- user, 要回寫的對象(傳入Root)
//全局變量,將user對象傳入Root
private User user=new User("Armo", 11, new Hobby(1L, "籃球"), "man", new Job(1L, "java"));
public User getUser() {
return user;
}
//方法體
//hobbys
List<Hobby> hobbys=new ArrayList<>();
hobbys.add(new Hobby(1L, "籃球"));
hobbys.add(new Hobby(2L, "足球"));
//jobs
List<Job> jobs=new ArrayList<>();
jobs.add(new Job(1L, "java"));
jobs.add(new Job(2L, "C++"));
//放入Context
ActionContext ctx = ActionContext.getContext();
ctx.put("jobs", jobs);
ctx.put("hobbys", hobbys);
JSP中
name=”屬性”
姓名:<s:textfield name="user.name"/></br>
年齡:<s:textfield name="user.age"/>
愛好:<s:checkboxlist name="user.hobby.id" list="#hobbys" listKey="id" listValue="name"/><br/>
性別:<s:radio name="user.sex" list="#{'man':'男','girl':'女'}" ></s:radio><br/>
工作:<s:select name="user.job.id" list="#jobs" listKey="id" listValue="name"/>
顯示結果