跳到导航
BEA Dev2Dev Oracle and BEA
首页 资源中心 dev2dev学堂 在线技术论坛 User Group CodeShare
dev2dev 首页 > 资源中心 > 技术文章
深入Beehive标签库系列教程(5) - 表单控件:下拉框

时间:2006-06-22
作者:肖菁
浏览次数:
本文关键字:BeehiveNetUITaglib标签表单教程
文章工具
推荐给朋友 推荐给朋友
打印文章 打印文章

  下拉框是表单(Form)中显示可选择数据的一种形式,下拉框可以支持单选,也可以支持多选,NETUI中netui:select和netuiOption这两个标签支持下拉框的显示。

  netui:select标签用于声明一个下拉框,它的dataSource属性用于设置显示时下拉框中那些选项已经被选中,我们可以给它的dataSource传递单个String参数表示下拉框组中有一个选项默认被选择,也可以传递一个String数组,表示下拉框中有多个选项默认被选中。netui:select的multiple设置为true时可以设置该下拉框支持多选,否则下拉框只能单选。

   netui: selectOption用于提供可选择项的信息。

   我们可以在JSP中增加下面的代码,在页面上简单的显示一个下拉框。

  1. <netui:select dataSource=“color”>
  2. <netui: selectOption value=“1”>1</netui: selectOption ><br>
  3. <netui: selectOption value=“2”>2</netui: selectOption ><br>
  4. <netui: selectOption value=“3”>3</netui: selectOption ><br>
  5. <netui: selectOption value=“4”>4</netui: selectOption ><br>
  6. </netui: select >

  我们可以将netui:select标签的multiple属性设置为true,下面的代码可以在页面上显示一个支持多选的下拉框。

  1. <netui:select multiple=”true”
  2. dataSource=“color”>
  3. <netui: selectOption value=“1”>1</netui: selectOption ><br>
  4. <netui: selectOption value=“2”>2</netui: selectOption ><br>
  5. <netui: selectOption value=“3”>3</netui: selectOption ><br>
  6. <netui: selectOption value=“4”>4</netui: selectOption ><br>
  7. </netui: select >

  下面的代码设置netui:select标签的dataSource属性为一个字符串,设置下拉框中一个选项默认被选中的情况。

  1. <%
  2. request.setAttribute("color", "#00FF00");
  3. %>
  4. <netui:select dataSource="color">
  5. <netui:selectOption value="#FF0000">红色</netui:selectOption>
  6. <netui:selectOption value="#00FF00">蓝色</netui:selectOption>
  7. <netui:selectOption value="#0000FF">绿色</netui:selectOption>
  8. <netui:selectOption value="#FFFFFF">白色</netui:selectOption>
  9. </netui:select>

  我们还可以用下面的代码来设置下拉框组中多个选项默认被选中,这种情况中传递给dataSource的值是String数组。注意这种情况下netui:select标签的multiple应该设置为true。

  1. <%
  2. String[] checkedColors = new String[] {"#00FF00", "#0000FF"};
  3. request.setAttribute("colors2", checkedColors);
  4. %>
  5. <netui:select multiple="true"
  6. dataSource="colors2">
  7. <netui:selectOption value="#FF0000">红色</netui:selectOption>
  8. <netui:selectOption value="#00FF00">蓝色</netui:selectOption>
  9. <netui:selectOption value="#0000FF">绿色</netui:selectOption>
  10. <netui:selectOption value="#FFFFFF">白色</netui:selectOption>
  11. </netui:select>

  有些情况下,下拉框的选项并不是固定的,而是不断变化的,这种情况下如果使用上面的处理方法,我们就需要在JSP页面中使用循环来完成显示。值得庆幸的是,netui: select标签提供了另外一种简单的形成多选框组的简单方法----使用optionsDataSource属性,optionsDataSource属性可以支持绑定到数组、Hashtable或者是List类型的变量上, netui: select标签输出的时候将自动根据绑定的对象内容生成可选择项,使用这种方式可以减少netui:selectOption标签的应用,增加页面显示的灵活性。

  optionsDataSource属性同时支持绑定到数组、Hashtable或者是List类型的变量上,不过不同的选择会让netui: select的行为有些差异。

  1. 选择绑定到数组时,生成的选择项的value属性和要显示的内容是一致的,都是数组项的值。

  比如我们选择将netui: select标签的optionsDataSource属性绑定到String[] colors = new String[] {"#FF0000", "#00FF00", "#0000FF","#FFFFFF"};这样一个数组时,生成的对应的主要HTML内容如下。

  <input type="hidden" value="true">

  <option value="#FF0000">#FF0000</option>

  <option value="#00FF00">#00FF00</option>

  <option value="#0000FF">#0000FF</option>

  <option value="#FFFFFF">#FFFFFF</option>

  </select>

  • 选择绑定到List类型变量时,通常生成的选择项的value属性和要显示的内容是一致的,都是List中对象的toString方法返回的内容。
  •   比如我们选择将netui: select标签的optionsDataSource属性绑定到一个List对象,并且使用下面的代码初始化这个对象。

      ArrayList list = new ArrayList();

      list.add("#FF0000");

      list.add("#00FF00");

      list.add("#0000FF");

      list.add("#FFFFFF");

      netui: select标签对应生成的主要HTML内容如下。

      <select>

      <option value="#FF0000">#FF0000</option>

      <option value="#00FF00">#00FF00</option>

      <option value="#0000FF">#0000FF</option>

      <option value="#FFFFFF">#FFFFFF</option>

      </select>

  • 选择绑定到Hashtable类型变量时,生成的选择框的value属性内容对应Hashtable中对象的key,而选择项(option)的要显示的内容对应Hashtable中对象的value。
  •   比如我们选择将netui: select标签的optionsDataSource属性绑定到一个Hashtable对象,并且使用下面的代码初始化这个对象。

      Hashtable h = new Hashtable();

      h.put("#FF0000","红色");

      h.put("#00FF00","蓝色");

      h.put("#0000FF","绿色");

      h.put("#FFFFFF","白色");

      netui: checkBoxGroup标签对应生成的主要HTML内容如下。

      <select>

      <option value="#FFFFFF">白色</option>

      <option value="#0000FF">绿色</option>

      <option value="#00FF00" >蓝色</option>

      <option value="#FF0000">红色</option>

      </select>

      下面我们以数组为例,学习如何使用数组来完成netui: select标签的初始化。首先我们定义一个数组,这个数组中包含了单选框的所有选择项”#FF0000”、”#00FF00”、”#0000FF”、”#FFFFFF”,调用request的setAttribute方法将这个数组加入到request中,然后将netui: select标签的optionsDataSource属性设置为这个数组。下面的代码显示了如何使用数组来初始化netui:select标签。

      1. <%
      2. request.setAttribute("color", "#00FF00");
      3. String[] colors = new String[] {"#FF0000", "#00FF00",
      4. "#0000FF","#FFFFFF"};
      5. request.setAttribute("colors2", colors);
      6. %>
      7. <netui:select dataSource="color"
      8. optionsDataSource="${colors2}" />

        netui:select标签使用时,optionsDataSource和dataSource属性的写法是有差异的,上面的例子中(第8行)optionsDataSource的属性被设置为${colors2},表示这是一个JSP的隐含变量,而dataSource的属性直接设置为color(第7行),不需要使用${}来包含。

      如何使用Hashtable和List类型变量初始化netui: select标签的用法请参见清单1。

        清单1 web\inputSelectExamples.jsp

      1. <%@ page language="java" contentType="text/html;charset=gb2312"%>
      2. <%@ page import="java.util.Hashtable" %>
      3. <%@ page import="java.util.ArrayList" %>
      4. <%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0"
      5. prefix="netui-data"%>
      6. <%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0"
      7. prefix="netui"%>
      8. <%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0"
      9. prefix="netui-template"%>
      10. <netui:html>
      11. <head>
      12. <title>Select Examples</title>
      13. <netui:base/>
      14. </head>
      15. <netui:body>
      16. <center>使用标签显示下拉框的例子</center><BR>
      17. <netui:form action="begin">
      18. 简单的下拉框的例子:<BR>
      19. <netui:select dataSource="colors2">
      20. <netui:selectOption value="#FF0000">
      21. 红色
      22. </netui:selectOption>
      23. <netui:selectOption value="#00FF00">
      24. 蓝色
      25. </netui:selectOption>
      26. <netui:selectOption value="#0000FF">
      27. 绿色
      28. </netui:selectOption>
      29. <netui:selectOption value="#FFFFFF">
      30. 白色
      31. </netui:selectOption>
      32. </netui:select><BR><BR>
      33. 简单的下拉框的例子--支持多选:<BR>
      34. <netui:select multiple="true" dataSource="colors2">
      35. <netui:selectOption value="#FF0000">
      36. 红色
      37. </netui:selectOption>
      38. <netui:selectOption value="#00FF00">
      39. 蓝色
      40. </netui:selectOption>
      41. <netui:selectOption value="#0000FF">
      42. 绿色
      43. </netui:selectOption>
      44. <netui:selectOption value="#FFFFFF">
      45. 白色
      46. </netui:selectOption>
      47. </netui:select><BR><BR>
      48. 简单的下拉框--设置单个选择项被选中的例子:<BR>
      49. <%
      50. request.setAttribute("color", "#00FF00");
      51. %>
      52. <netui:select
      53. dataSource="color">
      54. <netui:selectOption value="#FF0000">
      55. 红色
      56. </netui:selectOption>
      57. <netui:selectOption value="#00FF00">
      58. 蓝色
      59. </netui:selectOption>
      60. <netui:selectOption value="#0000FF">
      61. 绿色
      62. </netui:selectOption>
      63. <netui:selectOption value="#FFFFFF">
      64. 白色
      65. </netui:selectOption>
      66. </netui:select><BR><BR>
      67. 简单的下拉框--使用数组设置多个选择项被选中的例子:<BR>
      68. <%
      69. String[] checkedColors = new String[] {"#00FF00", "#0000FF"};
      70. request.setAttribute("colors2", checkedColors);
      71. %>
      72. <netui:select multiple="true"
      73. dataSource="colors2">
      74. <netui:selectOption value="#FF0000">
      75. 红色
      76. </netui:selectOption>
      77. <netui:selectOption value="#00FF00">
      78. 蓝色
      79. </netui:selectOption>
      80. <netui:selectOption value="#0000FF">
      81. 绿色
      82. </netui:selectOption>
      83. <netui:selectOption value="#FFFFFF">
      84. 白色
      85. </netui:selectOption>
      86. </netui:select><BR><BR>
      87. 下拉框--使用数组初始化netui:select标签的例子:<BR>
      88. <%
      89. request.setAttribute("color", "#00FF00");
      90. String[] colors = new String[] {"#FF0000", "#00FF00",
      91. "#0000FF","#FFFFFF"};
      92. request.setAttribute("colors2", colors);
      93. %>
      94. <netui:select dataSource="color"
      95. optionsDataSource="${colors2}" /><BR><BR>
      96. 下拉框--使用Hashtable初始化netui:select标签的例子:<BR>
      97. <%
      98. request.setAttribute("color", "#00FF00");
      99. Hashtable h = new Hashtable();
      100. h.put("#FF0000","红色");
      101. h.put("#00FF00","蓝色");
      102. h.put("#0000FF","绿色");
      103. h.put("#FFFFFF","白色");
      104. request.setAttribute("colors2", h);
      105. %>
      106. <netui:select dataSource="color"
      107. optionsDataSource="${colors2}" /><BR><BR>
      108. 简单的下拉框--使用List初始化netui:select标签的例子:<BR>
      109. <%
      110. ArrayList list = new ArrayList();
      111. list.add("#FF0000");
      112. list.add("#00FF00");
      113. list.add("#0000FF");
      114. list.add("#FFFFFF");
      115. request.setAttribute("colors3", list);
      116. %>
      117. <netui:select dataSource="color3"
      118. optionsDataSource="${colors3}" /><BR><BR>
      119. <netui:anchor formSubmit="true">提交</netui:anchor>
      120. </netui:form>
      121. </netui:body>
      122. </netui:html>
       作者简介
      icon
      肖菁
      肖菁 是唯J族(www.vivianj.org)创始人,BEA 杭州User Group负责人,自由撰稿人,开源项目BuildFileDesigner(buildfiledesign.sourceforge.net)和V-Security(v-security.sourceforge.net)创始人。
      dot dot dot

      dot
        作者其它文章
      您对本文的评价
      您对这篇文章的看法如何?
      太棒了!5分 不错啊 4分 一般般 3分 有待提高 2分 不好 1分

         
相关技术