介紹
表單標籤將在 HTML 文檔裏被呈現爲一個表單元素
使用表單標籤的優點:
表單回顯
對頁面進行佈局和排版
標籤的屬性可以被賦值爲一個靜態的值或一個 OGNL 表達式. 如果在賦值時使用了一個 OGNL 表達式並把它用 %{} 括起來, 這個表達式將會被求值.
表單標籤的共同屬性
.* 該屬性只在沒有使用 simple 主題時纔可以使用.
form 標籤
form 標籤用來呈現 HTML 語言中的表單元素
默認情況下, form 標籤將被呈現爲一個表格形式的 HTML 表單. 嵌套在 form 標籤裏的輸入字段將被呈現爲一個表格行. 每個表格行由兩個字段組成**, 一個對應着行標, 一個對應着輸入元素**. 提交按鈕將被呈現爲一個橫跨兩列單元格的行
自我感覺:
表單標籤:
1.使用和htm1的form標籤的感覺差不多
2. Struts2 的form標籤會生成一一個 table,以進行自動的排版
3.可以對錶單提交的值進行回顯:從棧頂對象開始匹配屬性, 並把匹配的屬性值賦到對應的標籤的value中,若棧頂對象沒有對應的屬性,則依次向下找相對應的屬性.
textfield, password, hidden 標籤
textfield 標籤將被呈現爲一個輸入文本字段, password 標籤將被呈現爲一個口令字段, hidden 標籤將被呈現爲一個不可見字段.
password 標籤擴展自 textfield 標籤, 多了一個 showPassword 屬性. 該屬性時布爾型. 默認值爲 false, 它決定着在表單回顯時是否顯示輸入的密碼.
submit 標籤
submit 標籤將呈現爲一個提交按鈕. 根據其 type 屬性的值. 這個標籤可以提供 3 種呈現效果:
input: <input type=“submim” …/>
button: <input type=“button” …/>
image:
textarea 標籤
textarea 標籤將呈現爲一個 HTML 文本域元素
例子:
index2.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<h1>index2</h1>
<!-- Struts form標籤會回顯,自動生成table排版 -->
<s:form action="save">
<s:hidden name="userId"></s:hidden>
<s:textfield name="userName" label="userName"></s:textfield>
<s:textarea name="desc" label="desc"></s:textarea>
<s:password name="passWord" label="passWord" showPassword="true"></s:password>
<s:submit></s:submit>
</s:form>
</body>
</html>
UserAction.java
package product;
public class UserAction {
private String userId;
private String userName;
private String passWord;
private String desc;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return userId+" "+userName+" "+passWord+" "+desc;
}
public String save(){
System.out.println(this);
return "success";
}
}
struts.xml
<action name="save" class="product.UserAction" method="save">
<result>/index2.jsp</result>
</action>
*checkbox 標籤
checkbox 標籤將呈現爲一個 HTML 複選框元素. 該複選框元素通常用於提交一個布爾值
當包含着一個複選框的表單被提交時, 如果某個複選框被選中了, 它的值將爲 true, 這個複選框在 HTTP 請求裏增加一個請求參數.但如果該複選框未被選中, 在請求中就不會增加一個請求參數.
checkbox 標籤解決了這個侷限性, 它採取的辦法是爲單個複選框元素創建一個配對的不可見字段
checkbox 標籤有一個 fieldValue 屬性, 該屬性指定的值將在用戶提交表單時作爲被選中的單選框的實際值發送到服務器. 如果沒有使用 fieldValue 屬性, 單選框的值將爲 true 或 false.
例子:
在上面代碼基礎上
UserAction.ava加入
private boolean man及getset方法,tostring帶上該屬性
index2.jsp from中加入
<s:checkbox name=“man” label=“man”></s:checkbox>
list, listKey 和 listValue 屬性
list, listKey, listValue 這 3 個屬性對 radio, select, checkboxlist 等標籤非常重要
可以把一個 String, 一個數組, 一個 Enumeration, Iterator, Map 或 Collection 賦給 list 屬性.
例子:
index2.jsp
List
<%List<City> list=new ArrayList<City>();
list.add(new City("001","a"));
list.add(new City("002","aa"));
list.add(new City("003","aaa"));
list.add(new City("004","aaaa"));
request.setAttribute("city",list);
%>
<s:radio name="sex1" list="#{'1':'man','0':'women'}" label="sex"></s:radio>
<s:checkboxlist name="city1" list="#request.city" listKey="id" listValue="name" label="city"></s:checkboxlist>
在Bean City.java 設置
private String sex1;
private String []city1;//換成List會回顯 數組不好使 對應的checkboxlist 服務端需要使用集合類型,以保證能夠被正常的回顯!
得到選定的值
Map
select 標籤 optiongroup 標籤
select 標籤將呈現一個 select 元素.
例子
optiongroup 標籤對 select 元素所提供的選項進行分組. 每個選項有它自己的來源.
checkboxlist 標籤
checkboxlist 標籤將呈現一組多選框.
checkbox 標籤被映射到一個字符串數組或是一個基本類型的數組. 若它提供的多選框一個也沒有被選中, 相應的屬性將被賦值爲一個空數組而不是空值.