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

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

  当收集的数据需要用户在几种可能中确定其中之一时,我们选择使用单选框向用户显示数据,netui: radioButtonGroup和netui: radioButtonOption两个标签联合工作能够完成单选框的显示。

  netui: radioButtonGroup标签用于声明单选框组,位于同一组中的单选内容组成同一组可选择的内容,用户只能在这些内容中选择其中之一,它的dataSource可以用于设置单选框的默认选择项。

  netui: radioButtonOption标签用于提供单选框组的可选择项,它的value属性用于设置选择项对应的值,<netui: radioButtonOption>和</netui: radioButtonOption>之间的内容将显示给用户。

  我们可以在JSP中增加下面的代码,完成一个单选框组的显示。

  1. <netui:radioButtonGroup dataSource=“data”>
  2. <netui:radioButtonOption value=“1”>
  3. Text 1
  4. </netui:radioButtonOption><br>
  5. <netui:radioButtonOption value=“2”>
  6. Text 2
  7. </netui:radioButtonOption><br>
  8. <netui:radioButtonOption value=“3”>
  9. Text 3
  10. </netui:radioButtonOption><br>
  11. </netui:radioButtonGroup>

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

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

  • 选择绑定到数组时,生成的选择项的value属性和要显示的内容是一致的,都是数组项的值。
  •   比如我们选择将netui: radioButtonGroup标签的optionsDataSource属性绑定到String[] colors = new String[] {"text1", "text2", "text3"};这样一个数组时,生成的对应的主要HTML内容如下。

    1. <input type="radio" value="text1"><span>text1</span><br>
    2. <input type="radio" value="text2" checked><span>text2</span><br>
    3. <input type="radio" value="text3"><span>text3</span><br>
  • 选择绑定到List类型变量时,通常生成的选择项的value属性和要显示的内容是一致的,都是List中对象的toString方法返回的内容。
  •   比如我们选择将netui: radioButtonGroup标签的optionsDataSource属性绑定到一个List对象,并且使用下面的代码初始化这个对象。

      ArrayList list = new ArrayList();

      list.add("text1");

      list.add("text2");

      list.add("text3");

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

      <input type="radio" value="text1"><span>text1</span><br>

      <input type="radio" value="text2" checked><span>text2</span><br>

      <input type="radio" value="text3"><span>text3</span><br>

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

      Hashtable h = new Hashtable();

      h.put("1","text1");

      h.put("2","text2");

      h.put("3","text3");

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

      <input type="radio" value="3"><span>text3</span><br>

      <input type="radio" value="2"><span>text2</span><br>

      <input type="radio" value="1"><span>text1</span><br>

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

  1. <%
  2. request.setAttribute("color", "text2");
  3. String[] colors = new String[] {"text1", "text2", "text3"};
  4. request.setAttribute("colors1", colors);
  5. %>
  6. <netui:radioButtonGroup dataSource="color"
  7. optionsDataSource="${colors1}" />

  上面的例子中我们直接在JSP中加入了Scriptlet,这不是我们推荐的方式,这样做的原因是仅仅是因为我们还没有学习页面流中如何在Action和JSP之间传递数据。这部分内容将在《第四章 应用页面流开发Web应用》中学习。

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

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

  清单1 web\inputRadioExamples.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>Form Examples</title>
  13. <netui:base/>
  14. </head>
  15. <netui:body>
  16. <center>使用标签显示表单的例子</center><BR>
  17. <netui:form action="begin">
  18. 单选框的例子:<BR>
  19. <netui:radioButtonGroup dataSource="data">
  20. <netui:radioButtonOption value="1">
  21. Text 1
  22. </netui:radioButtonOption>
  23. <netui:radioButtonOption value="2">
  24. Text 2
  25. </netui:radioButtonOption>
  26. <netui:radioButtonOption value="3">
  27. Text 3
  28. </netui:radioButtonOption>
  29. </netui:radioButtonGroup><BR>
  30.  
  31. 单选框的另外一个例子--使用数组初始化标签:<BR>
  32. <%
  33. request.setAttribute("color", "text2");
  34. String[] colors = new String[] {"text1", "text2", "text3"};
  35. request.setAttribute("colors1", colors);
  36. %>
  37. <netui:radioButtonGroup dataSource="color"
  38. optionsDataSource="${colors1}" />
  39.  
  40. 单选框的另外一个例子--使用Hashtable初始化标签:
  41. <%
  42. Hashtable h = new Hashtable();
  43. h.put("1","text1");
  44. h.put("2","text2");
  45. h.put("3","text3");
  46. request.setAttribute("colors2", h);
  47. %>
  48. <netui:radioButtonGroup dataSource="color"
  49. optionsDataSource="${colors2}" />
  50.  
  51. 单选框的另外一个例子--使用ArrayList初始化标签:
  52. <%
  53. ArrayList list = new ArrayList();
  54. list.add("text1");
  55. list.add("text2");
  56. list.add("text3");
  57. request.setAttribute("colors3", list);
  58. %>
  59. <netui:radioButtonGroup dataSource="color"
  60. optionsDataSource="${colors3}" />
  61. <netui:anchor formSubmit="true">提交</netui:anchor>
  62. </netui:form>
  63.  
  64. </netui:body>
  65. </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分

   
相关技术