这个标签生成左右两个select组件,两个组件之间有button group来执行两个组件之间的数据转换。并支持每个组件中选项的排序。
Attributes
|
Description
|
name
|
对应action中的变量名称,生成的left select的name属性
|
doubleName
|
Required,对应action中变量的名称,生成的complete component的name属性
|
list
|
Required,生成的left select元素显示的可选列表,参照combobox的list属性
|
doubleList
|
Required,生成的complete select元素显示的可选列表,参照 list属性
|
listKey
|
生成的left select 的option元素的value属性
|
listValue
|
生成的left select的option元素的显示内容
|
doubleListKey
|
complete select的选项的value属性
|
doubleListValue
|
complete select的option元素显示的内容
|
leftTitle
|
Left select title
|
rightTitle
|
Right select title
|
multiple
|
布尔型,如果设置为true,标签会为左边的选项预先选中,这要通过Array类型的value属性来确定哪些是预选中的
|
doubleMultiple
|
参照multiple属性,起作用于右面的select组件
|
emptyOption
|
布尔型,决定左面的select是否添加一个空选项
|
doubleEmptyOption
|
布尔型,决定右面的select是否添加一个空选项
|
Jsp code:
<s:optiontransferselect
label="Favourite"
name="leftSideHobbyIds"
leftTitle="My Favourite"
rightTitle="All Interest"
list="#session.myFavourite"
listKey="hobbyId"
listValue="hobbyName"
multiple="true"
headerKey="headerKey"
headerValue="--- Please Select ---"
emptyOption="true"
doubleList="#session.hobbyList"
doubleListKey="hobbyId"
doubleListValue="hobbyName"
doubleName="rightSideHobbyIds"
doubleHeaderKey="doubleHeaderKey"
doubleHeaderValue="--- Please Select ---"
doubleEmptyOption="true"
doubleMultiple="true"
/>
Page source code:
<script type="text/javascript" src="/demohr/struts/optiontransferselect.js"></script>
<table border="0">
<tr>
<td>
<label for="leftTitle">My Favourite</label><br />
<select name="leftSideHobbyIds" size="15" id="testTags_leftSideHobbyIds" multiple="multiple">
<option value="headerKey">--- Please Select ---</option>
<option value=""></option>
</select>
……
//left component buttons
</td>
<td>
<label for="rightTitle">All Interest</label><br />
<select
name="rightSideHobbyIds"
size="15"
multiple="multiple"
id="testTags_rightSideHobbyIds">
<option value="doubleHeaderKey">--- Please Select ---</option>
<option value=""></option>
<option value="1">Football</option>
<option value="2">Basketball</option>
</select>
…..
//right component buttons
</td>
</tr>
</table>
Prepare action:
一个 select显示的内容一般是从db中取得,另一个select的选项一般从第一个select取得,初始的数据也要提前(页面load之前)准备数据,假设一个List是所有的Hobby,另一个List存放User Favourite的Hobby,下面是准备数据:
List<Hobby> myFavourite = new ArrayList<Hobby>();
List<Hobby> hobbyList = new ArrayList<Hobby>();
//对两个list进行相应的处理,赋入初始数据
map.put("myFavourite", myFavourite);
map.put("hobbyList", hobbyList);
return SUCCESS; //return xxx.jsp
Action class:
private String[]leftSideHobbyIds; //with getter/setter method
//如果两个组件的值都想取得,就定义两个数组型的变量 变量名和标签的name/doubleName属性的值相同
Result:
在页面提交到Action后,leftSideHobbyIds就被赋值为select的选项对应的值,这个值是数组。
这个标签适用于权限赋值,以及从一个集合中选择某些值到另一个集合,并且这种操作的效果比较直观。比较强大的是,两边的组件支持选项的排序。
分享到:
相关推荐
Struts2中的表单标签主要分为基础表单标签和高级表单标签两大类。基础表单标签涵盖了如单选框、复选框、下拉列表等基本元素;而高级表单标签则是在此基础上进行了扩展,增加了更多的功能性和灵活性。这些标签的设计...
本篇文章将深入探讨Struts2 UI标签中的几个关键组件:tabbedPanel、autocompleter、tree和treenode以及optiontransferselect,这些标签在实际项目中有着广泛的应用。 首先,`tabbedPanel`标签是用于创建多选项卡的...
下面是一个简单的表单示例,展示了如何使用Struts2标签库中的几个常见标签: ```jsp 书名:<s:textfield name="book.bookName" /><br/> 价格:<s:textfield name="book.bookPrice" /><br/> 出版时间:...
自定义标签的实现通常分为以下几个步骤: 1. **创建标签库**:定义一个XML文件(如struts-tags.xml),用于声明自定义标签及其属性。这个文件会被Struts2框架解析,使自定义标签可以在JSP页面中使用。 2. **编写...
下面将详细介绍几个关键的Struts2标签: 1. `s:textfield`: 这个标签用于创建HTML输入字段,它自动处理了表单数据的绑定,可与Action类的属性对应。 2. `s:textarea`: 用于创建多行文本输入框,同样支持数据绑定。...
通过以上几个示例,我们可以看到 `<s:if>` 标签在 Struts2 中的应用是非常灵活和强大的。它可以用来实现各种复杂的逻辑判断,如数值比较、字符串匹配等。此外,结合其他标签如 `<s:iterator>`,可以实现更复杂的逻辑...
4. **Struts2循环和显示标签**:Struts2提供了丰富的标签库,用于在JSP页面上处理数据展示,如迭代、条件判断等。例如`<s:iterator>`用于遍历集合,`<s:property>`用于显示对象属性。 5. **SQL Server 2005分页查询...
Struts2标签库主要包括以下几个方面: - **HTML标签**:用于创建HTML表单元素。 - **控制结构标签**:用于实现条件逻辑和循环。 - **数据绑定标签**:用于数据的展示与绑定。 - **UI标签**:用于创建复杂的用户界面...
### Struts2配置文件及其代码示例解析 #### 一、Struts2概述 Struts2是一个基于MVC模式的开源Web应用框架,它继承了Struts1的优点,并且进行了大量的改进,支持拦截器、结果类型、动态方法调用等功能。在Struts2中...
通过实验,学员能够掌握Struts2中几个常用标签(如`<s:radio>`、`<s:select>`、`<s:token>`)的应用,并理解OGNL表达式的基本用法。这些知识点对于初学者来说至关重要,因为它们构成了Struts2应用开发的基础。 ####...
在Struts2框架中,主要包含以下几个核心概念: 1. **Action类**:Action类是业务逻辑处理的核心,它是Struts2中的控制器。开发者需要创建一个继承自`com.opensymphony.xwork2.ActionSupport`或其子类的Java类,并在...
Struts 1.x 中的标签被分为以下几个类别: 1. **BeanTags**:用于创建 Bean、访问 Bean 和访问 Bean 的属性,同时也支持依据 cookies、headers 和 parameters 创建相关的 Bean。 2. **HTMLTags**:用于创建 Struts ...
下面将详细介绍几种常见的Struts2.0标签,并结合示例进行解释: ### 示例分析 给出的示例代码主要展示了如何使用`<html:select>`标签来创建一个下拉列表,并利用`<c:forEach>`标签遍历数据集以填充下拉列表选项。...
以上介绍的是Struts2框架中常用的几个标签,这些标签极大地简化了Web应用程序的开发过程。通过灵活运用这些标签,开发者可以在提高开发效率的同时确保代码的可读性和可维护性。希望本文能帮助读者更好地理解和掌握...
在Struts2登录DEMO中,主要涉及以下几个核心知识点: 1. **Action类**:在Struts2中,Action类是业务逻辑的载体,通常继承自`org.struts2.StrutsAction`或实现`com.opensymphony.xwork2.Action`接口。在这个DEMO中...
Bean Tags是Struts中最基础也是最常用的标签之一,主要用于创建、访问以及管理Bean对象。Bean在这里通常指的是JavaBean,这是一种遵循特定命名和编码约定的Java类,用于封装数据和业务逻辑。Bean Tags包括以下几种:...
- **分类**:Struts1.x的标签库按照功能划分为HTML、Tiles、Logic和Bean等几个部分;而Struts2.0虽然没有明确的分类,但所有的标签都放在了`/struts-tags`这一命名空间下,但从功能上看,可以大致分为非UI标签和UI...
在给定的标题和描述中,"struts标签做的增删查改"提到了几个关键的Struts2标签,它们分别是`s:iterator`、`s:textfield`、`s:select`以及`s:checkboxlist`,这些标签在构建表单和处理数据时起到重要作用。...
Struts2标签库主要分为以下几部分: - `s:` 核心标签库:包含了最常用的功能,如表单元素、控制流标签等。 - `x:` 动态标签库:用于动态生成HTML元素,提高了灵活性。 - `field:` 表单字段标签库:专门处理表单...
要实现Struts2的级联菜单,主要涉及以下几个步骤: 1. **创建实体类**:首先,你需要根据数据库中的表结构创建对应的Java实体类,这些类将用于表示菜单项。例如,你可以有`Country`、`Province`和`City`类,它们...