Struts中用动态选择的元素创建复选框
2008-01-05 08:23:34 来源:WEB开发网核心提示:在用户界面设计中,复选框组不如它的同类 —— 多行选择框那样流行,Struts中用动态选择的元素创建复选框,它们基本上做的是同一件事,即选择映射到单一 name 属性的一组选项,会显示复选框,当我在它们之间迭代时,当在组中使用时,复选框执行的功能实际与多行选择框一样
在用户界面设计中,复选框组不如它的同类 —— 多行选择框那样流行。它们基本上做的是同一件事,即选择映射到单一 name 属性的一组选项。当在组中使用时,复选框执行的功能实际与多行选择框一样,但是它们占据的屏幕空间更多。 当希望用户在选择一个或多个选项之前能够看到所有选项的时候,这会很有好处。
虽然在选项不多的时候,多行选择框通常提供更好的观感,但是当选择框必须动态呈现而且包含预选功能时,对企业应用程序来说复选框组会是更好的选择。幸运的是,使用 Struts 框架可以很轻易地创建动态复选框组。
在这篇文章中,我将介绍一个简单的诀窍:用 Struts 的 <Html:multibox/> 和 <logic:iterate/> 标记在应用程序的视图层呈现大量条目,在本例中是 java Server Page(jsp)。
我先从使用复选框元素显示简单的 String[] 数组开始,数组中包含喜玛拉雅山的顶峰高度。然后,我将创建另外一个 String[] 数组,包含 selectedMountains ,代表已经选中的复选框。复选框的预选情况会在两个数组的交叉中产生。假如 selectedMountains 的初始数组为空,那么所有复选框最初都会显示为未选中。
创建动态复选框
创建动态复选框的诀窍包含三个主要部分:
- 一个表单 bean,容纳复选框的 String[] 数组和表示选中复选框的 String[] 数组。
- 一个 JSP,带有一个表单,在需要的时候显示复选框。
- 一个简单的 Action 类,从表单页面转到显示页面。
第 1 步. 创建表单 bean
我先从创建 Struts 表单 bean 开始,它包含填充复选框所需要的信息。请注重清单 1 中的 TestForm.java 包含了两个示例 String[] 数组变量的 getter 和 setter。数组 mountains 代表示例复选框的 全部选项,数组 selectedMountains 代表预选的在浏览器中显示为选中的元素。
除了代表初始选中的复选框,selectedMountains 还代表处理表单时,由用户选中的复选框。(它只代表最终选中的元素。)当请求页面时,会显示复选框。当我在它们之间迭代时,与 selectedMountains 匹配的复选框元素就是选中的元素。
清单 1 显示了 TestForm.java 的完整代码:
清单 1. TestForm.java
package com.strutsrecipes; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; public final class CheckboxTestForm extends ActionForm { // Instance Variables /*Mountains "PRe-selected"...*/ private String[] selectedMountains = {"Everest","K2","Lhotse"}; /*the ten tallest Mountains to iterate through*/ private String[] mountains = {"Everest","K2","Kangchenjunga","Lhotse", "Makalu","Kangchenjunga South", "Lhotse Middle","Kangchenjunga West", "Lhotse Shar","Cho Oyu"}; /*Getter for selectedMountains*/ public String[] getSelectedMountains() { return this.selectedMountains; }
更多精彩
赞助商链接