Logic标签

Logic标签  
   
  Struts标签库提供了一组在JSP中控制 流程 的标签。例如,对标签体的循环或条件赋值。这些标签打包在一个公共标签库中,其TLD文件为struts-logic.tld。逻辑标签库定义的标签执行三种功能:  
  •   条件逻辑  
  •   循环  
  •   转发/重定向响应  
   
  标签 功能  
  <equal> 如果常量值等于定义的实体的值,返回true  
  <notEqual> 如果常量值不等于定义的实体的值,返回true  
  <greaterEqual> 如果常量值等于或大于定义的实体的值,返回true  
  <lessEqual> 如果常量值等于或小于定义的实体的值,返回true  
  <lessThan> 如果常量值小于定义的实体的值,返回true  
  <greaterThan> 如果常量值大于定义的实体的值,返回true  
  如果名为name的请求参数没有出现,就执行标签体。接下来,是一个使用<logic:present>标签的例子:  
  <logic:present   name=”bean”   property=”prop”   scope=”page”>  
        The   bean   property   bean.prop   is   present  
        </logic:present>  
  该例中,假如有一个叫bean的bean,其范围为page,并且该bean有一个叫prop的属性,就执行标签体。  
  与上面相比,第三类条件标签理解起来要复杂一些。这些标签基于模式匹配的结果执行标签体的内容。换句话说,标签要计算一个特定项的值是否是一个指定常量的子串。有两个这类的标签:  
  &#8226;   <logic:match>  
  &#8226;   <logic:noMatch>  
  如果找到了匹配(对<logic:match>来说)或没有找到匹配(对<logic:noMatch>来说),标签允许JSP引警执行标签体。两个属于这一类的标签有相同的一组属性:所有这些属性在运行时可以赋 表达 式的值。  
   
  现在我们看一些使用上述标签的例子:  
  <logic:noMatch   parameter=”name”   value=”xyz”>  
        The   parameter   name   is   not   a   substring   of   the   string   xyz  
  </logic:noMatch>  
  如果有一个叫name的request参数,它的值不是字符串xyz的子串,上面的<logic:noMatch>标签执行标签体。下面是另外一个例子:  
  <logic:match   parameter=”name”   value=”xyz”   location=”1”>  
        The   parameter   name   is   a   substring   of   the   string   xyz   from   the   index   1  
  </logic:match>  
   
  属性 描述  
  value 要比较的常量值  
  cookie 要比较的HTTP   cookie的名字  
  header 要比较的HTTP请求头的名字  
  parameter 要比较的HTTP请求参数的名字  
  location 如果指定了该属性的值,将在该指定的现场进行匹配(索引值)  
  name 如果值与bean或bean属性比较,就是bean的名字  
  property 要与value比较的bean属性  
  scope 若指定了bean名字,则是bean的范围,若范围没有指定,就在page到application之间查找  
  如果有一个叫name的request参数,它的值是字符串xyz的子串,该标签执行标签体,不过子串一定从xyz的索引值1开始,(换句话说,子串必须是Y或YZ)。  
   
  循环标签  
  logic标签库定义了<logic:iterate>标签,它根据在一个特定集中的元素个数,多次执行标签体的内容。集可以是 java .util.Iterator、java.util.Collection、java.util.Map类型或数组。有三种方式定义集(collection)。  
  &#8226;   使用运行时表达式,该表达式为collection属性返回一个集  
  &#8226;   定义一个作为bean的集,用name属性指定存储属性的名字  
  &#8226;   用name属性定义一个bean,用将返回集的property属性去定义bean属性  
  集的当前元素将定义为一个页面范围的bean,该标签的属性解释如表18.18所示。所有的属性可以在运行时赋值。  
   
  属性 描述  
  length 循环的最大次数  
  offset 循环开始处的索引值  
  collection 没有指定name属性时循环的集  
  name bean的名字,bean是集或bean的由property属性定义的属性是一个信  
  property 是集的bean属性的名字  
  id page范围的的bean的名字, 代码 段变量的名字,该变量保存在集中的当前元素的句柄  
  type 为当前元素定义的page范围bean的类型  
  scope 如果指定了bean的名字,就是该bean是范围,如果没有指定范围,在page到application之间查找  
  下面我们看看<logic:iterate>标签的一个例子:  
  <%  
  List   myList   =   new   ArrayList();  
  myLost.add(new   Integer(0));  
  myList.add(new   Integer(1));  
  myList.add(new   Integer(2));  
  myList.add(new   Integer(3));  
  myList.add(new   Integer(4));  
  %>  
  <logic:iterate   id   =”currentInt”  
  collection=”<&=myList   %>”  
  type=”java.lang.Integer”  
  offset=”1”  
  length=”2”   >  
  <%=   currentInt   %>  
  </logic:iterate>  
  上面的代码将从列表的第二个元素开始,重复两个元素,它会使当前元素作为一个page范围和java.lang.Integer类型的代码段变量。换句话说,这段代码输出1和2。  
   
  转发和重定向标签  
          Struts逻辑标签库定义了转发响应的标签和另一个重定向到URL的标签。  
           
          转发标签  
          <logic:forward>标签转发或重定向响应到指定的全局ActionForward。全局ActionForward的类型决定是用PageContext转发响应,还是用senRedirect定向响应。为该标签定义的惟一属性是name属性,它包含有全局ActionForward的名字,下面是一个例子。  
                <logic:forward   name   =   “MyGlobalForward”/>  
     
          重定向标签  
          <logic:redirect>标签是执行HTTP重定向的有效机制。根据指定的属性,可以用不同的方法重定向,也可以让 开发 者为重定向的URL指定查询参数。该标签的属性解释如表18.19,所有属性都可以在运行时赋值。  
          标签应该指定用forward、href或page属性的哪一个来指定响应重定向到的资源。下面是几个例子:  
          <%  
  request.setAttribute(“manager”,”Ranieri”);  
  %>  
  <logic:redirect   href=http://www.myClub.co.uk  
  paramId=”manger”  
  paramName=”manager”  
  praramScope=”request”/>  
   
   
        属性 描述  
  forward 映射到相对路径的全局的ActionForward的逻辑名  
  href 资源的全限定URL地址  
  page 资源的相对路径  
  name 一种情况是:类型为Map的page、request、session或application属性名;它含有联系重定向的URL的 查询 参数的名一值对(如果没有指定property属性的话);另一种情况是:bean的名字,它有含有相同的信息Map类型的属性(如果指定了property)  
  property 类型为Map的bean属性的名字。这个bean的名字由上面的name属性给出  
  scope 如果指定了bean名字,这个范围是在要查找的bean内。如果没有指定范围,就在page到application范围内查找  
  paramId 定义一个特定查询参数的名字  
  paraName 一种情况是类型为String的bean的名字,它有查询参数的值(如果没有指定属性paramProperty);另一个情况是有一个属性(由paramProperty指定)含有查询参数值的bean  
  paramProperty String类型的bean属性,含有查询参数  
  paramScope 要查找的由paraName属性定义的bean的范围  
          这里将把响应重定到http://www.myClub.co.uk?manager=Ranieri。Bean中包含有在URL查询参数中的来自名-值对的值。再看下一个例子:  
          <%  
  HashMap   queryMap   =   new   HashMap();  
  queryMap.put(“manager”,”Ranieri”);  
  request.setAttribute(“manager”,queryMap);  
  %>  
  <%logic:redirect   href=http://www.myClub.co.uk  
  name=”manager”  
  scope=”request”/>  
        与上一个重定向到相同的URL。不过这里用类型为Map的request属性来保存查询名-值对。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值