| Struts2的表单标签
所有的表单标签可以分为两种:form标签本身和单个表单元素的标签。Struts2的表单元素标签都包含了非常多的属性。但有很多属性完全是通用的。
表单标签的通用属性
所有表单标签处理类都继承了UIBean类,UIBean包含了一些通用属性,这些通用属性分成3种:
1,模板相关属性;2,javascript相关属性;3,通用属性。
除了这些属性之外,所有的表单元素标签都存在一个特殊的属性:form,这个属性引用表单元素所在的表单,通过该form属性,可以实现表单元素和表单之间的交互。例如,我们可以通过${parameters.form.id}来取得表单元素所在表单的ID。表单标签的通用属性有以下几类:
1,模板相关的通用属性:可以指定该表单标签所用的模板和主题。
2,javascript相关的通用属性:指定在鼠标在该标签上操作时的javascript函数。
3,设置表单元素的提示:当鼠标在这引动元素上时,系统将出现提示。Struts2将这种特性称为Tooltip。
4,设置表单元素的CSS样式。
表单标签的name和value属性
name属性会映射到Action中的属性名称,value属性则代表此属性的值。例子如下:
<!-- 将下面文本框的值绑定到Action的person属性的firstName属性 -->
<s:textfield name="person.firstName" />
<!-- 使用表达式生成表单元素的值 -->
<s:textfield name="person.firstName" value="${person.firstName}" />
实际上Struts2已经自动处理了属性内容的赋值工作,因此我们只需要使用第一种方式就可以了。
checkboxlist标签
checkboxlist标签可以一次创建多个复选框,用于一次生成多个HTML标签中的<input type="checkbox">,它根据list属性指定的集合来生成多个复选框。因此使用该标签要指定一个list属性。其它都是通过属性,但是有两个常用属性:
1,listKey:该属性指定集合元素中的某个属性作为复选框的key
2,listValue:该属性指定集合元素中的某个属性作为复选框的value
下面是一个JSP页面的例子:
<%@ page contentType="text/html; charset=GBK" language="java"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
<title>使用s:checkboxlist生成多个复选框</title>
<s:head/>
</head>
<body>
<h3>使用s:checkboxlist生成多个复选框</h3>
<s:form>
<!-- 使用简单集合来生成多个复选框 -->
<s:checkboxlist name="a" label="请选择您喜欢的图书" labelposition="top"
list="{'Spring2.0' , 'J2EE' , 'Ajax'}"/>
<!-- 使用简单Map对象来生成多个复选框 -->
<s:checkboxlist name="b" label="请选择您想选择出版日期" labelposition="top"
list="#{'Spring2.0':'2006年10月' , 'J2EE':'2007月4月' , 'Ajax':'2007年6月'}"
listKey="key"
listValue="value"/>
<s:bean name="lee.BookService" id="bs"/>
<!-- 使用集合里放多个JavaBean实例来生成多个复选框 -->
<s:checkboxlist name="b" label="请选择您喜欢的图书" labelposition="top"
list="#bs.books"
listKey="name"
listValue="author"/>
</s:form>
</body>
</html>
JavaBean和JavaBean的访问类代码如下:
package lee;
public class Book
{
private String name;
private String author;
public Book()
{
}
public Book(String name , String author)
{
this.name = name;
this.author = author;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
public void setAuthor(String author)
{
this.author = author;
}
public String getAuthor()
{
return this.author;
}
}
package lee;
public class BookService
{
public Book[] getBooks()
{
return new Book[]
{
new Book("Spring2.0","李"),
new Book("J2EE","李"),
new Book("Ajax","李")
};
}
}
combobox标签
combobox标签生成一个单行文本框和下拉列表框的结合,但两个表单元素只对应一个请求参数,只有单行文本框里的值才包含请求参数,而下拉列表框则只是用于辅助输入,并没有name属性,也就不会产生请求参数。使用该标签时,需要指定一个list属性,该list属性指定的集合将用于生成列表框。例子如下:
|
发表评论