OGNL的使用----表单标签

Struts2提供了很多表单标签,大部分表单标签和HTML表单标签之间有一一对应的关系,这里只介绍一些比较特殊的表单标签。对于表单标签而言,name和value存在一个特殊的关系,每个表单元素会被映射成Action属性。

使用Struts2标签必须先导入标签库,在页面使用如下代码导入Struts2标签:
<%@taglib prefix="s" uri="/struts-tags"%>


textfield标签:
<s:textfield name="person.firstName"/>

checkboxlist标签:

使用简单集合来生成多个复选框
<s:checkboxlist name="a" lable="请选择你喜欢的图书" labelposition="top" list="{'Java编程思想','J2EE企业应用实战'}"/>

使用简单Map对象来生成多个复选框
<s:checkboxlist name="b" label="请选择你喜欢的图书" labelposition="top" list="{'Java编程思想':'2012年8月','J2EE企业应用实战':'2012年9月'}" listKey="key" listValue="value"/>

使用创建的放有多个对象的JavaBean对象来生成多个复选框
<s:bean name="com.service.BookService" id="bs"/>
<s:checkboxlist name="b" label="请选择你喜欢的图书" labelposition="top" list="#bs" listKey="author" listValue="name"/>


public class BookService{
    public Book[]getBooks(){
         return new Book[]{
            new Book("Java编程思想","李刚");
            newBook("J2EE企业应用实战","李刚");
         };
    }
}

public class Book{
  private String name;
  private String author;
 
  public Book(String name,String author){
     this.name=name;
     this.author=author;
  }
  //getter&setter...
}

select标签:

使用集合来生成下拉选择框


<s:select name="a" lable="请选择你喜欢的图书" lableposition="top" multiple="true" list="{'Java编程思想','J2EE企业应用实战'}" />


使用简单Map对象来生成下拉选择框


<s:select name="b" lable="请选择你喜欢的图书" lableposition="top" multiple="true" list="#{'Java编程思想':'2012年8月','J2EE企业应用实战':'2012年9月'}" listKey="key" listValue="value"/>


属性说明:
multiple:设置该列表框是否允许多选
listKey:指定集合中的某个元素作为复选框的value
listValue:指定集合中的某个元素作为复选框的标签

使用集合里放多个JavaBean实例来生成下拉选择框


<s:bean name="com.service.BookService" id="bs"/>
<s:select name="b" lable="请选择你喜欢的图书" labelposition="top" multiple="true" list="#bs.books" listKey="author" listValue="name"/>

radio标签:


使用集合来生成单选框


<s:radio name="a" lable="请选择你喜欢的图书" lableposition="top" multiple="true" list="{'Java编程思想','J2EE企业应用实战'}" />


使用简单Map对象来生成单选框


<s:radio name="b" lable="请选择你喜欢的图书" lableposition="top" multiple="true" list="#{'Java编程思想':'2012年8月','J2EE企业应用实战':'2012年9月'}" listKey="key" listValue="value"/>


使用集合里放多个JavaBean实例来生成单选框


<s:bean name="com.service.BookService" id="bs"/>
<s:radio name="c" lable="请选择你喜欢的图书" labelposition="top" multiple="true" list="#bs.books" listKey="author" listValue="name"/>

optgroup标签:
<s:optgroup lable="请选择你喜欢的图书" list="#{'Java编程思想':'2012年8月'}" listKey="value" listValue="key"/>
<s:optgroup lable="请选择你喜欢的图书" list="#{'J2EE企业应用实战':'2012年9月'}" listKey="value" listValue="key"/>

token标签:
这是一个防止多次提交表单的标签,如果需要该标签起作用,则应该在Struts2的配置文件中启用TokenInterceptor拦截器或TokenSessionStoreInterceptor拦截器。
token的实现原理:在表单中增加一个隐藏域,每次加载页面时,该隐藏域的值都不同,而TokenInterceptor则拦截所有的用户请求,如果两次请求时该token对应隐藏域的值相同,则阻止表

单提交。
<s:token />

doubleselect标签:


doubleselect标签会生成一个级联列表框,当选择第一个下拉列表框时,第二个下拉列表框的内容会随之而改变。
<s:doubleselect lable="请选择你喜欢的图书"
                name="author"
                list="{'李刚','David'}"
                doubleList="top=='李刚'?{'Struts2权威指南','轻量级Java EE企业应用实战'}:{'Java编程思想','23种设计模式'}"/>

使用Map对象来创建doubleselect
<s:set name="bs" value="#{'李刚':{'Struts2权威指南','轻量级Java EE企业应用实战'},'David':{'Java编程思想','23种设计模式'}}"/>
<s:doubleselect lable="请选择你喜欢的图书"
                size="3"
                name="author"
                list="#bs[top]"
                doubleSize="3"
                doubleName="book"/>

optiontransferselect标签:


optiontransferselect标签会生成两个列表选择框,并生成系列的按钮来控制各选项在两个下拉列表之间的移动、升降。当提交表单时,两个列表选择框对应的请求参数都会被提交。

<s:optiontransferselect
                lable="请选择你喜欢的图书"
                name="cnbook"
                leftTitle="中文图书"
                rightTitle="外文图书"
                list="{'Struts2权威指南','Java编程思想'}"
                multiple="true"
                addToLeftLable="向左移动"
                selectAllLable="全部选择"
                addAllToRightLable="全部右移"
                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"
/>

属性说明:

list:设置第一个下拉列表选择框的集合

listKey:设置第一个下拉列表选择框的value属性

listValue:设置第一下下拉列表选择框的lable属性

doubleList:设置第二个下拉列表选择框的集合

doubleListKey:设置第二个下拉列表选择框的value属性

doubleListValue:设置第二个下拉列表选择框的lable属性

doubleMultiple:设置第二个下拉列表选择框是否允许多选

updownselect标签:


使用简单集合来生成可上下移动选项的下拉选择框
<s:updownselect name="a" label="请选择你喜欢的图书"
                lableposition="top"
                moveUpLable="向上移动"
                list="{'Struts2权威指南','Java编程思想'}"/>


使用简单Map对象来生成可上下移动选项的下拉选择框
<s:updownselect name="b" lable="请选择你喜欢的图书"
                lableposition="top"
                moveDownLable="向下移动"
                list="{'Struts2权威指南':'2012年8月','Java编程思想':'2012年9月'}"
                listKey="key"
                listValue="value"
                emptyOption="true"
/>
              
使用集合里放多个JavaBean实例来生成可上下移动选项的下拉选择框
<s:bean name="com.service.BookService" id="bs"/>
<s:updownselect name="c" lable="请选择你喜欢的图书"
                lableposition="top"
                selectAllLable="全部选择"
                list="#bs.books"
                listKey="author"
                listValue="name"
                multiple="true"
/>

猜你喜欢

转载自premier9527.iteye.com/blog/1661515