logic:iterate (1)

  1. <logic:iterate>
  2. <logic:iterate>标记用于在页面中创建一个循环,以此来遍历如数组,Collection,Map这样的对象。该标记的功能强大,在Struts应用的页面中经常使用到。
  3. 对数组进行循环遍历
  4. 使用<logic:iterate>标记可以用于遍历数组。以下是一段示例代码:
  5. <%
  6. String[]testArray1={"str0","str1","str2","str3","str4","str5","str6"};
  7. pageContext.setAttribute("test1",testArray1);
  8. %>
  9. <logic:iterateid="array1"name="test1">
  10. <bean:writename="array1"/>
  11. </logic:iterate>
  12. 在上面的代码中,首先定义了一个字符串数组,并为其初始化。接着,将该数组存入pageContext对象中,命名为test1。然后使用<logic:iterate>标记的name属性指定了该数组,并使用id来引用它,同时使用<bean;write>标记来将其显示出来。运行效果如下所示:
  13. 分析一下上面的代码,可知<logic:iterate>标记的name属性用于指定某一存在的对象,id属性定义一个新的对象来引用name属性所指定的对象。再使用<bean:write>标记的name属性来引用了id属性所定义的新的对象,将数组的值打印出来。另外,还可以通过length属性来指定输出元素的个数。如下面的代码。
  14. <logic:iterateid="array1"name="test1"length="3"offset="2">
  15. <bean:writename="array1"/>
  16. </logic:iterate>
  17. 其中length属性指定了输出元素的个数,offset属性指定了从第几个元素开始输出,如此处为2则表示从第三个元素开始输出。所以该代码的运行结果应当从str2一直输出到str4。实际运行效果如下:
  18. 另外,该标记还有一个indexId属性,它指定一个变量存放当前集合中正被访问的元素的序号,如下例:
  19. <logic:iterateid="array1"name="test1"length="3"offset="2"indexId="number">
  20. <bean:writename="number"/>:
  21. <bean:writename="array1"/>
  22. </logic:iterate>
  23. 运行效果如下所示:
  24. :
  25. 可以看出,序号已经加在了输出字符串的前面。
  26. 对HashMap进行循环遍历
  27. 以下是一段使用<logic:iterate>标记遍历HashMap的代码。
  28. <%
  29. HashMapcountries=newHashMap();
  30. countries.put("country1","中国");
  31. countries.put("country2","美国");
  32. countries.put("country3","英国");
  33. countries.put("country4","法国");
  34. countries.put("country5","德国");
  35. pageContext.setAttribute("countries",countries);
  36. %>
  37. <logic:iterateid="country"name="countries">
  38. <bean:writename="country"property="key"/>:<bean:writename="country"property="value"/>
  39. </logic:iterate>
  40. 上面的代码首先定义了一个HashMap的对象,并向其中添加了5个元素,再把它存入pageContext对象中,命名为countries。令<logic:iterate>标记的name属性等于"countries",id为country。再让<bean:write>标记的name属性和<logic:iterate>标记的id属性相对应,令property一个为"key",一个为"value"。便会有以下输出结果:
  41. :
  42. 从效果上看出,<logic:iterate>标记确定遍历了HashMap的每一个元素,但它并未按添加的顺序将其显示出来。这是因为HashMap是无序存放的。
  43. 对List进行循环遍历
  44. <logic:iterate>标记也可以对List型的对象进行遍历,以下是一段示例代码。
  45. <%
  46. ArrayListlist1=newArrayList();
  47. list1.add("str1");
  48. list1.add("str2");
  49. list1.add("str3");
  50. list1.add("str4");
  51. list1.add("str5");
  52. pageContext.setAttribute("testlist",list1);
  53. %>
  54. <logic:iterateid="showlist"name="testlist"indexId="index">
  55. <bean:writename="index"/>:
  56. <bean:writename="showlist"/>
  57. </logic:iterate>
  58. 运行效果如下:
  59. :
  60. 嵌套遍历
  61. <logic:iterate>标记还可以进行嵌套遍历,以下是一段代码示例:
  62. <%
  63. String[]colors={"red","green","blue"};
  64. String[]countries1={"中国","美国","法国"};
  65. String[]persons={"乔丹","布什","克林顿"};
  66. ArrayListlist2=newArrayList();
  67. list2.add(colors);
  68. list2.add(countries1);
  69. list2.add(persons);
  70. pageContext.setAttribute("list2",list2);
  71. %>
  72. <logic:iterateid="first"name="list2"indexId="numberfirst">
  73. <bean:writename="numberfirst"/>:
  74. <logic:iterateid="second"name="first">
  75. <bean:writename="second"/>
  76. </logic:iterate>
  77. <br>
  78. </logic:iterate>

你可能感兴趣的:(iterate)