学习struts2已经很长时间了,一直觉得他的标签很好用,下面就介绍几个选择标签:
下面将用到一个book类,和getBooks的方法,在本文的尾部会提供。
1、<s:select/>
<s:form> <!-- 使用简单集合来生成下拉选择框 --> <s:select name="a" label="请选择您喜欢的图书" labelposition="top" multiple="true" list="{'Struts 2权威指南','轻量级Java EE企业应用实战', 'JavaScript: The Definitive Guide'}"/> <!-- 使用简单Map对象来生成下拉选择框 --> <s:select name="b" label="请选择您想选择出版日期" labelposition="top" list="#{'Struts 2权威指南':'2007年10月', '轻量级Java EE企业应用实战':'2007月4月', '疯狂Ajax讲义':'2007年6月'}" listKey="key" listValue="value"/> <!-- 创建一个JavaBean实例 --> <s:bean name="lee.BookService" id="bs"/> <!-- 使用集合里放多个JavaBean实例来生成下拉选择框 --> <s:select name="b" label="请选择您喜欢的图书" labelposition="top" multiple="true" list="#bs.books" listKey="author" listValue="name"/> </s:form>
预览
2、<s:combobox />
<s:form> <s:combobox label="请选择您喜欢的图书" theme="css_xhtml" labelposition="top" list="{'Struts 2权威指南','轻量级Java EE企业应用实战', '疯狂Ajax讲义'}" size="20" maxlength="20" name="book"/> </s:form>
预览
3、<s:optgroup/>
<s:form> <!-- 直接使用Map为列表框生成选项 --> <s:select label="选择您喜欢的图书" name="book" size="7" list="#{'Struts 2权威指南':'李刚','轻量级Java EE企业应用实战':'李刚', '疯狂Ajax讲义':'李刚'}" listKey="value" listValue="key"> <!-- 使用Map对象来生成选择框的选项组 --> <s:optgroup label="Rod Johnson" list="#{'Expert One-on-One J2EE Design and Development':'Johnson'}" listKey="value" listValue="key"/> <s:optgroup label="David Flanagan" list="#{'JavaScript: The Definitive Guide':'David'}" listKey="value" listValue="key"/> </s:select> </s:form>
预览
4、<s:doubleselect/>
<s:form action="x"> <s:doubleselect label="请选择您喜欢的图书" name="author" list="{'李刚', 'David'}" doubleList="top == '李刚' ? {'Struts 2权威指南', '轻量级Java EE企业应用实战','疯狂Ajax讲义'}: {'JavaScript: The Definitive Guide'}" doubleName="book"/> </s:form>
预览
<!-- 创建一个复杂的Map对象,key为普通字符串,value为集合 --> <s:set name="bs" value="#{'李刚': {'Struts 2权威指南', '轻量级Java EE企业应用实战','疯狂Ajax讲义'}, 'David': {'JavaScript: The Definitive Guide'}, 'Johnson': {'Expert One-on-One J2EE Design and Development'}}"/> <!-- 使用Map对象来生成级联列表框 --> <s:form action="x"> <s:doubleselect label="请选择您喜欢的图书" size="3" name="author" list="#bs.keySet()" doubleList="#bs[top]" doubleSize="3" doubleName="book"/> </s:form>
预览
5、<s:updownselect/>
<s:form> <!-- 使用简单集合来生成可上下移动选项的下拉选择框 --> <s:updownselect name="a" label="请选择您喜欢的图书" labelposition="top" moveUpLabel="向上移动" list="{'Struts 2权威指南' , '轻量级Java EE企业应用实战', '疯狂Ajax讲义'}"/> <!-- 使用简单Map对象来生成可上下移动选项的下拉选择框 且使用emptyOption="true"增加一个空选项--> <s:updownselect name="b" label="请选择您想选择出版日期" labelposition="top" moveDownLabel="向下移动" list="#{'Struts 2权威指南':'2007年10月','轻量级Java EE企业应用实战':'2007月4月' ,'疯狂Ajax讲义':'2007年6月'}" listKey="key" emptyOption="true" listValue="value"/> <s:bean name="lee.BookService" id="bs"/> <!-- 使用集合里放多个JavaBean实例来可上下移动选项的生成下拉选择框 --> <s:updownselect name="c" label="请选择您喜欢的图书的作者" labelposition="top" selectAllLabel="全部选择" multiple="true" list="#bs.books" listKey="author" listValue="name"/> </s:form>
预览
6、<s:optiontransferselect />
<h3>使用s:optiontransferselect来生成可移动列表项的下拉列表框</h3> <s:form> <!-- 使用简单集合对象来生成可移动的下拉列表框 --> <s:optiontransferselect label="请选择你喜欢的图书" name="cnbook" leftTitle="中文图书:" rightTitle="外文图书" list="{'疯狂Java讲义' ,'Struts 2权威指南', '轻量级Java EE企业应用实战','疯狂Ajax讲义'}" multiple="true" addToLeftLabel="向左移动" selectAllLabel="全部选择" addAllToRightLabel="全部右移" headerKey="cnKey" headerValue="--- 选择中文图书 ---" emptyOption="true" doubleList="{'Expert One-on-One J2EE Design and Development', 'JavaScript: The Definitive Guide'}" doubleName="enBook" doubleHeaderKey="enKey" doubleHeaderValue="--- 选择外文图书 ---" doubleEmptyOption="true" doubleMultiple="true" /> </s:form>
预览
7、<s:radio/>
<h3>使用s:radio生成多个单选框</h3> <s:form> <!-- 使用简单集合来生成多个单选框 --> <s:radio name="a" label="请选择您喜欢的图书" labelposition="top" list="{'Struts 2权威指南','轻量级Java EE企业应用实战', '疯狂Ajax讲义'}"/> <!-- 使用简单Map对象来生成多个单选框 --> <s:radio name="b" label="请选择您想选择出版日期" labelposition="top" list="#{'Struts 2权威指南':'2007年10月', '轻量级Java EE企业应用实战':'2007月4月' , '疯狂Ajax讲义':'2007年6月'}" listKey="key" listValue="value"/> <!-- 创建一个JavaBean实例 --> <s:bean name="lee.BookService" id="bs"/> <!-- 使用集合里放多个JavaBean实例来生成多个单选框 --> <s:radio name="c" label="请选择您喜欢的图书" labelposition="top" list="#bs.books" listKey="author" listValue="name"/> </s:form>
预览
8、<s:checkboxlist/>
<h3>使用s:checkboxlist生成多个复选框</h3> <s:form> <!-- 使用简单集合来生成多个复选框 --> <s:checkboxlist name="a" label="请选择您喜欢的图书" labelposition="top" list="{'Struts 2权威指南' , '轻量级Java EE企业应用实战' , '疯狂Ajax讲义'}"/> <!-- 使用简单Map对象来生成多个复选框 使用Map对象的key(书名)作为复选框的value, 使用Map对象的value(出版时间)作为复选框的标签--> <s:checkboxlist name="b" label="请选择您想选择出版日期" labelposition="top" list="#{'Struts 2权威指南':'2007年10月', '轻量级Java EE企业应用实战':'2007月4月', '疯狂Ajax讲义':'2007年6月'}" listKey="key" listValue="value"/> <!-- 创建一个JavaBean对象,并将其放入Stack Context中 --> <s:bean name="lee.BookService" id="bs"/> <!-- 使用集合里放多个JavaBean实例来生成多个复选框 使用集合元素里name属性作为复选框的标签 使用集合元素里author属性作为复选框的value--> <s:checkboxlist name="b" label="请选择您喜欢的图书" labelposition="top" list="#bs.books" listKey="author" listValue="name"/> </s:form>
预览
books.java
public class Book { //两个普通属性 private String name; private String author; //无参数的构造器 public Book() { } //初始化全部属性的构造器 public Book(String name , String author) { this.name = name; this.author = author; } //name属性的setter和getter方法 public void setName(String name) { this.name = name; } public String getName() { return this.name; } //author属性的setter和getter方法 public void setAuthor(String author) { this.author = author; } public String getAuthor() { return this.author; } }
BookService.java
public class BookService { public Book[] getBooks() { return new Book[] { new Book("疯狂Java讲义","李刚"), new Book("Struts 2权威指南","李刚"), new Book("轻量级Java EE企业应用实战","李刚"), new Book("疯狂Ajax讲义","李刚") }; } }