天天看点

Struts1.x系列教程(7):Logic标签库

本文为原创,如需转载,请注明作者和出处,谢谢!

Struts Logic标签库包含了如下三类标签:

  1. 循环标签:iterate标签。用于枚举数组、集合类型对象中的元素。

  2. 条件处理标签:用于是否相等、比较大小等判断。这类标签有empty、equal 、greaterEqual、greaterThan、lessEqual、lessThan、match、messagesNotPresent、messagesPresent、notEmpty、notEqual、notMatch、notPresent、present。

  3. 流控制标签:用于转向其他的页面。redirect和forward属性这类标签。

一、循环标签(iterate)

    <logic:iterate>标签用于对数组以及集合类型对象中的元素进行枚举。<logic:iterate>标签在功能上和JSTL中的<c:forEach>标签非常相似。<logic:iterate>标签的常用属性的意义和作用如下:

1. id:一个表示集合中的每一个元素的变量,被保存在page范围中。

2. name:一个数组或集合对象名,或是一个包含有getter方法的JavaBean。

3. property:如果name是一个JavaBean,那么property就是这个JavaBean的属性名。<logic:iterate>标签通过这个属性名获得要枚举的数组或集合对象。

4. indexId:循环过程中的索引(从0开始),相当于Java中在for循环中使用变量i来获得循环中每一项的索引。

5. offset:偏移量。也就是从数组或集合的第几个元素开始枚举。

6. length:从offset开始,要枚举的元数的个数。

7. scope:name变量保存的范围。如果不指定,<logic:iterate>标签将搜索所有的范围。也就是说,依次按着page、request、session和application进行搜索,如果在不同的范围有同样的变量名,以先搜索到的为准。   

下面的例子演示了<logic:iterate>标签的使用。在<samples工程目录>目录中建立一个iterate.jsp文件,代码如下:

  <%@ page  import="java.util.*" pageEncoding="GBK"%>

  <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>

  <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>

  <html>

<head>

<title>测试iterate标签</title>

</head>

<body>

  <%

      String array[] = { "bill", "王明", "赵阳" };

      pageContext.setAttribute("array", array);

      List<String> list = new LinkedList<String>();

      list.add("计算机");

      list.add("英语");

      pageContext.setAttribute("list", list);

      pageContext.setAttribute("iterator", list.iterator());

      Map<String, String> map = new HashMap<String, String>();

      map.put("book", "书");

      map.put("apple", "苹果");

      pageContext.setAttribute("keySet", map.keySet());

      pageContext.setAttribute("entrySet", map.entrySet());

  %>

      <logic:iterate id="s" name="array" indexId="i" offset="1" length="1">

        array[<bean:write name="i"/>] = <bean:write name="s"/> 

      </logic:iterate>    

      <br>

      <jsp:useBean id="form" class="actionform.HtmlTagsForm"/>

      <jsp:setProperty name="form" property="hobbies" value="<%= new String[]{"计算机","旅游","摄影"} %>"/>

      <logic:iterate id="s" name="form" property="hobbies">

        <bean:write name="s"/> 

      <logic:iterate id="s" name="list" indexId="i">

        list[<bean:write name="i"/>] = <bean:write name="s"/> 

      </logic:iterate>

      <logic:iterate id="s" name="iterator" indexId="i" offset="1">

      <logic:iterate id="entry" name="entrySet">

        <bean:write name="entry" property="key"/> = <bean:write name="entry" property="value"/> 

    </body>

  </html>

在IE中输入如下的URL测试iterate.jsp: 

<a href="http://localhost:8080/samples/iterate.jsp">http://localhost:8080/samples/iterate.jsp</a>

&lt;logic:forward&gt;标签用于把当前的请求转发给其他的静态资源、JSP页或Servlet。在功能和使用上和&lt;jsp:forward&gt;类似。   

    关于Logic标签库的更详细的信息请读者参阅Struts的官方网站,URL如下:

<a href="http://struts.apache.org/1.2.9/userGuide/struts-logic.html">http://struts.apache.org/1.2.9/userGuide/struts-logic.html</a>