介绍
表单标签将在 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 标签被映射到一个字符串数组或是一个基本类型的数组. 若它提供的多选框一个也没有被选中, 相应的属性将被赋值为一个空数组而不是空值.