在用户界面设计中,复选框组不如它的同类 —— 多行选择框那样流行。它们基本上做的是同一件事,即选择映射到单一 name 属性的一组选项。当在组中使用时,复选框执行的功能实际与多行选择框一样,但是它们占据的屏幕空间更多。 当希望用户在选择一个或多个选项之前能够看到所有选项的时候,这会很有好处。
虽然在选项不多的时候,多行选择框通常提供更好的观感,但是当选择框必须动态呈现而且包含预选功能时,对企业应用程序来说复选框组会是更好的选择。幸运的是,使用 struts 框架可以很容易地创建动态复选框组。
在这篇文章中,我将介绍一个简单的诀窍:用 struts 的 <html:multibox/> 和 <logic:iterate/> 标记在应用程序的视图层呈现大量条目,在本例中是 java server page(jsp)。
我先从使用复选框元素显示简单的 string[] 数组开始,数组中包含喜玛拉雅山的顶峰高度。然后,我将创建另外一个 string[] 数组,包含 selectedmountains ,代表已经选中的复选框。复选框的预选情况会在两个数组的交叉中产生。如果 selectedmountains 的初始数组为空,那么所有复选框最初都会显示为未选中。
创建动态复选框
创建动态复选框的诀窍包含三个主要部分:
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; } /*setter for selectedmountains*/ public void setselectedmountains(string[] selectedmountains) { this.selectedmountains = selectedmountains; } /*getter for the mountains*/ public string[] getmountains() { return this.mountains; } /*setter for the mountains*/ public void setmountains(string[] mountains) { this.mountains = mountains; } } |
<%@taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> <%@taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> <%@taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic"%> <%-- html code, etc... --> <html:form action="/formaction" name="testform" type="com.strutsrecipes.checkboxtestform"> <h4><bean:message key="testform.instruction"/></h4> <logic:iterate name="testform" property="mountains" id="mountain"> <%-- create the checkbox and selected attribute --> <html:multibox property="selectedmountains"> <bean:write name="mountain"/> </html:multibox> <%-- create the label, note that "br" tag will format it vertically --> <bean:write name="mountain"/> |
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器