思诚科技 seecen LOGO
咨询热线:0791-87557233
 您现在的位置:  首页 > Java框架 

Struts中用动态选择的元素创建复选框

来源:网络    更新时间:2014-12-2


  在用户界面设计中,复选框组不如它的同类——多行选择框那样流行。它们基本上做的是同一件事,即选择映射到单一name属性的一组选项。当在组中使用时,复选框执行的功能实际与多行选择框一样,但是它们占据的屏幕空间更多。当希望用户在选择一个或多个选项之前能够看到所有选项的时候,这会很有好处。

  虽然在选项不多的时候,多行选择框通常提供更好的观感,但是当选择框必须动态呈现而且包含预选功能时,对企业应用程序来说复选框组会是更好的选择。幸运的是,使用Struts框架可以很容易地创建动态复选框组。

  在这篇文章中,我将介绍一个简单的诀窍:用Struts的<html:multibox/>和<logic:iterate/>标记在应用程序的视图层呈现大量条目,在本例中是JavaServerPage(JSP)。

  我先从使用复选框元素显示简单的String[]数组开始,数组中包含喜玛拉雅山的顶峰高度。然后,我将创建另外一个String[]数组,包含selectedMountains,代表已经选中的复选框。复选框的预选情况会在两个数组的交叉中产生。如果selectedMountains的初始数组为空,那么所有复选框最初都会显示为未选中。

  创建动态复选框

  创建动态复选框的诀窍包含三个主要部分:
一个表单bean,容纳复选框的String[]数组和表示选中复选框的String[]数组。

一个JSP,带有一个表单,在需要的时候显示复选框。

一个简单的Action类,从表单页面转到显示页面。  请注意“Himalayas”示例非常简单。用来填充复选框的字段应当来自更复杂的模型,比如这样的模型,它能够标识用户,并选择要显示的字段,然后把业务对象认为需要的选项预先选中。我采用简单的模型是为了更好地演示Struts的用户界面功能。代码示例使用JSP脚本语言是为了表示清楚。

  第1步.创建表单bean

  我先从创建Struts表单bean开始,它包含填充复选框所需要的信息。请注意清单1中的TestForm.java包含了两个示例String[]数组变量的getter和setter。数组mountains代表示例复选框的全部选项,数组selectedMountains代表预选的在浏览器中显示为选中的元素。

  除了代表初始选中的复选框,selectedMountains还代表处理表单时,由用户选中的复选框。(它只代表最终选中的元素。)当请求页面时,会显示复选框。当我在它们之间迭代时,与selectedMountains匹配的复选框元素就是选中的元素。

  清单1显示了TestForm.java的完整代码:

  清单1.TestForm.java

packagecom.strutsrecipes;importjavax.Servlet.http.HttpServletRequest;importorg.apache.struts.action.ActionError;importorg.apache.struts.action.ActionErrors;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionMapping;publicfinalclassCheckboxTestFormextendsActionForm{//InstanceVariables/*Mountains"pre-selected"...*/privateString[]selectedMountains={"Everest","K2","Lhotse"};/*thetentallestMountainstoiteratethrough*/privateString[]mountains={"Everest","K2","Kangchenjunga","Lhotse","Makalu","KangchenjungaSouth","LhotseMiddle","KangchenjungaWest","LhotseShar","ChoOyu"};/*GetterforselectedMountains*/publicString[]getSelectedMountains(){returnthis.selectedMountains;}/*SetterforselectedMountains*/publicvoidsetSelectedMountains(String[]selectedMountains){this.selectedMountains=selectedMountains;}/*Getterforthemountains*/publicString[]getMountains(){returnthis.mountains;}/*Setterforthemountains*/publicvoidsetMountains(String[]mountains){this.mountains=mountains;}}

  第2步.编写JSP代码

  • 上一篇文章:

  • 下一篇文章:
  •  

    0791-87557233

    重视每个来电 珍惜您的时间
    思诚者开发沙龙
    江西思诚科技有限公司  赣ICP备17006097号  CopyRight©2014 - 2020