1、 checkboxlist标签
该标签可以一次性创建多个复选框,用于同时生成多个<input type="checkbox".../>的HTML标签,该标签根据list属性指定的集合来生成多个复选框。另外还有两个属性,listKey:该属性指定集合中的某个属性作为复选框的value,如果集合是Map,则可以使用key或者value来指定Map中的key或者value。listValue:该属性指定集合元素中的某个属性作为复选框的标签。
代码示例:
Person类
package org.app;
public class Person {
private String name;
private int age;
private String person;
public Person() {}
public Person(String name , String person) {
this.name = name;
this.person = person;
}
public String getPerson() {
return person;
}
public void setPerson(String person) {
this.person = person;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}}
PersonService类
package org.app;
public class PersonService {
public Person[] getPersons(){
return new Person[]
{
new Person("张三","1号"),
new Person("李四", "2号"),
new Person("王二麻子", "3号"),
new Person("小五", "4号")
};
}}
jsp页面
<s:form>
<s:checkboxlist list="{'张三' , '李四' , ' 王二麻子' , '小五'} " name="a" label="请选择想选的人物:" labelposition="top"/>
<s:checkboxlist list="#{'张三':'1' , '李四':'2', '王二麻子':'3','小五':'4' }" label="请选择想选择的编号:" labelposition="top" name="b" listKey="key" listValue="value"/>
<s:bean name="org.app.PersonService" var="ps"/>
<s:checkboxlist list="#ps.persons" name="b" label="请选择喜欢的人物:" labelposition="top" listKey="person" listValue="name"/>
</s:form>
结果:
2、 radio标签
该标签用法与checkboxlist标签使用方法一样,只是checkboxlist标签生成多个复选框,而radio生成的是多个单选框。
3、 select标签
该标签用于生成一个下拉框,该标签必须使用list属性,系统会使用list属性指定的集合来生成下拉列表框的选项。其中也有listKey和listValue属性,用法和checkboxlist一样,另外还有一个multiple属性,该属性指定是否该列表框允许多选。用法和checkboxlist一样。
4、 optgroup标签
该标签用于生成一个下拉列表框的选项组,因此该标签必须放在<s:select.../>标签中使用,使用该标签时与select类似,一样需要使用list、listKey和listValue等属性,使用方法类似。
5、 head标签
用于生成HTML页面的<head.../>部分。
6、 updownselect标签
类似于select标签,区别在于该标签生成的列表框可以上下移动选项,一样可以使用select中的list,listKey和listValue等属性,另外还有以下几个属性:
(1) allowMoveUp:是否显示“上移”按钮,默认true
(2) allowMoveDown:是否显示“下移”按钮,默认true
(3) allowSelectAll:是否显示“全显”按钮,默认true
(4) allowUpLabel:设置显示“上移”按钮上的文本,默认是^符号
(5) allowDownLabel:设置显示“下移”按钮上的文本,默认是v符号
(6) allowAllLabel:设置“全选”按钮上的文本,默认为“*”符号
7、doubleselect标签
该标签会生成一个级联表框(会生成两个下拉列表框),当选择第一个下拉表框时,第二个下拉表框会随之改变。常用属性:
(1) list:指定用于输出第一个下拉列表框中选项的集合。
(2) listKey:指定集合元素中的某个属性作为第一个下拉列表框的value。
(3) listValue:指定集合元素中的某个属性作为复选框的标签。
(4) doubleList:指定用于输出第二个下拉列表框中选项的集合
(5) doubleListKey:指定集合元素中的某个属性作为第二个下拉列表框的value。
(6) doubleListValue:指定集合元素中的某个属性作为第二个下拉列表框的标签。
(7) doubleName:指定第二个下拉列表框的name属性。
代码示例:
<s:form action="x">
<s:doubleselect doubleList="top=='张三' ?{ '姓张明三' , ' 第二个' , ' 第三个'} : { ' js:the first' ,'the second'}" list="{'张三' , ' David'}" doubleName="name" name="waihao"/>
</s:form>
结果如图
另外可以采用一种方式,首先定义一个Map对象,该对象的value都是集合,这样就能以Map对象的多个key创建第一个下拉列表框的列表项,而每个key对应的集合则用于创建第二个下拉列表框的列表项。
代码示例:
<s:set var="bs" value="#{'张三' : { '第一个 ' , ' 第二个 ' ,' 第三个' } , 'Sam':{' first' , ' second' , ' third'} }"/>
<s:form action="x">
<s:doubleselect doubleList="#bs[top]" list="#bs.keySet()" doubleName="name" name="people" label="选择人名" size="1" doubleSize="1"/>
</s:form>
运行结果和差不多
注意:在form表单中一定要加上action!!!
9、 optiontransferselect标签
该标签会生成两个列表选择框,并生成系列的按钮用于控制个选项在两个下拉列表之间的移动、升降等,该标签的一系列属性在此就不详细阐述了。
10、 token标签
用于防止重复提交表单的标签,实现原理是在表单中增加一个隐藏域,每次加载该页面时,该隐藏域的值 都不相同,而TokenInterceptor拦截器则拦截所有用户请求,如果两次请求时该token对应隐藏域的值相同(前一次提交时token隐藏域的值保存在session),则阻止表单提交。