转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/19/251967.html

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"/>&nbsp;
      </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"/>&nbsp;
      </logic:iterate>    
      <br>
      <logic:iterate id="s" name="list" indexId="i">
        list[<bean:write name="i"/>] = <bean:write name="s"/>&nbsp;
      </logic:iterate>
      <br>
      <logic:iterate id="s" name="iterator" indexId="i" offset="1">
        list[<bean:write name="i"/>] = <bean:write name="s"/>&nbsp;
      </logic:iterate>
      <br>
      <logic:iterate id="entry" name="entrySet">
        <bean:write name="entry" property="key"/> = <bean:write name="entry" property="value"/>&nbsp;
      </logic:iterate>
    </body>
  </html>

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

http://localhost:8080/samples/iterate.jsp

二、条件处理标签

条件处理标签可分为如下三类:
1. Test:
present、notPresent、empty、notEmpty、 messagesPresent、messagesNotPresent

2. 比较:equal,
lessThan, lessEqual, greaterThan和greaterEqual

3. 字符串匹配: match、notMatch

所有的条件处理标签都有name和property属性。分别用来指定对象名和属性名。如下面的代码演示了<logic:empty>和<logic:lessThan>标签的使用:

  <logic:empty name="var">
      var为空
  </logic:empty>
  <logic:lessThan name="employee" property="age" value="18">
      不符合工作年龄
  </logic:lessThan>   

三、流控制标签(redirectforward

<logic:redirect>用于重定向到其他的Web资源。用法如下:

  <logic:redirect href="http://www.sina.com.cn"/>

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

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

http://struts.apache.org/1.2.9/userGuide/struts-logic.html

【转】Struts1.x系列教程(7):Logic标签库的更多相关文章

  1. 【转】Struts1.x系列教程(4):标签库概述与安装

    转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/0 ...

  2. Spring 系列教程之自定义标签的解析

    Spring 系列教程之自定义标签的解析 在之前的章节中,我们提到了在 Spring 中存在默认标签与自定义标签两种,而在上一章节中我们分析了 Spring 中对默认标签的解析过程,相信大家一定已经有 ...

  3. Spring 系列教程之默认标签的解析

    Spring 系列教程之默认标签的解析 之前提到过 Spring 中的标签包括默认标签和自定义标签两种,而两种标签的用法以及解析方式存在着很大的不同,本章节重点带领读者详细分析默认标签的解析过程. 默 ...

  4. JSTL标签库的基本教程之核心标签库(二)

    JSTL标签库的基本教程之核心标签库(二) 核心标签库 标签 描述 <c:out> 用于在JSP中显示数据,就像<%= ... > <c:set> 用于保存数据 & ...

  5. 【转】Struts1.x系列教程(6):Bean标签库

    转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/0 ...

  6. 【转】Struts1.x系列教程(5):HTML标签库

    转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/0 ...

  7. [转]Struts1.x系列教程(1):用MyEclipse开发第一个Struts程序

    转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/13/251101.html 本系列教程将详细介绍Struts 1.x的基本原理和使用方法, ...

  8. JSTL标签库的基本教程之核心标签库(一)

    JSTL介绍 Java Server Pages Standard Tag Libray(JSTL):JSP标准标签库,它封装了JSP应用的通用核心功能.JSTL支持通用的.结构化的任务,比如迭代,条 ...

  9. 【转】Struts1.x系列教程(2):简单的数据验证

    转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/13/251197.html 简单验证从本质上说就是在服务端 ...

随机推荐

  1. 改centos7的网卡名

    学习参考的文章,地址双手奉上http://www.linuxidc.com/Linux/2015-09/123396.htm 1.查看服务器的流量使用情况,执行命令cat /proc/net/dev ...

  2. 手机自带的显示基站命令(android手机定位,iphone基站定位)

    手机自带的显示基站命令(安卓手机定位,苹果手机基站定位) 分类: 通信和网络2012-02-07 17:48 1734人阅读 评论(0) 收藏 举报 手机htciphone中兴三星网络 安卓手机自带快 ...

  3. js sort() 排序的问题

    默认并非按照大小排序,而是根据Assic来排序的,但接受一个排序函数.所以正确的使用姿势应该是这样的: var arr = [0,1,5,10,15]; function sequence(a,b){ ...

  4. BizTalk开发系列(三十五) TCP/IP 适配器

    BizTalk 的TCP/IP适配器最初是为英国的保健行业开发.该适配器属于BizTalk进程内适配器,将消息通过TCP/IP 套接字符串在BizTalk服务器与远程客户端间进行通讯. TCP/IP适 ...

  5. BizTalk开发系列(二十七) 异常管理中的数据编码

    在BizTalk的异常管理解决方案中.大部分是通过订阅相关的升级属性来接收消息,并在自定义的流程或发送端口进行处理.但不管怎样,一般会定义统一的 错误消息Schema,这样不仅可以让我们通过异常信息快 ...

  6. LaTex 插入图片

    \usepackage{mathrsfs} \usepackage{amsmath} \usepackage{graphicx} 宏包 \includegraphics{graph01.eps} %插 ...

  7. Java Collection框架详解

    引用自:http://blog.sina.com.cn/s/blog_6d6f5d7d0100s9nu.html 经常会看到程序中使用了记录集,常用的有Collection.HashMap.HashS ...

  8. dns服务

    http://33024.blog.163.com/blog/static/12307042220119179237568/

  9. LightOj 1197 - Help Hanzo(分段筛选法 求区间素数个数)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1197 题意:给你两个数 a b,求区间 [a, b]内素数的个数, a and b ( ...

  10. Android 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore

    此篇博客最后更新时间写自2016.5.18.当下高德地图jar版本为3.3.1. 使用高德地图碰到此问题,纠结许久(接近4个多小时). 记录在此,希望遇到相同问题的读者可以有所借鉴. 错误截图: 导致 ...