| 
 | 
 
| 
 
 struts标签--logic总结 
   1.  logic:empty 
          该标签是用来判断是否为空的。如果为空,该标签体中嵌入的内容就会被处理。该标签用于以下情况: 
 
         1)当java对象为null时; 
 
         2)当String对象为""时; 
 
         3)当java.util.Collection对象中的isEmpty()返回true时; 
 
         4)当java.util.Map对象中的isEmpty()返回true时。 
          eg.  
            <logic:empty   name="userList">    
              ...    
           </logic:empty>  
           该句等同于: 
           if   (userList.isEmpty())   {    
                 ...    
           }    
   2.  logic:notEmpty 
          该标签的应用正好和logic:empty标签相反,略。 
   3. logic:equal 
          该标签为等于比较符。 
          eg1. 比较用户的状态属性是否1,若为1,输出"启用"; 
                 <logic:equal   name="user"   property="state"   value="1"> 
                     启用 
                 </logic:equal> 
         eg2. 如果上例中的value值是动态获得的,例如需要通过bean:write输出,因struts不支持标签嵌套,可采用EL来解决该问题。 
                <logic:equal   name="charge"   property="num"   value="${business.num}">    
                    ...... 
                </logic:equal> 
    4. logic:notEqual 
          该标签意义与logic:equal相反,使用方法类似,略。 
    5. logic:forward 
          该标签用于实现页面导向,查找配置文件的全局forward。 
          eg. <logic:forward name="index"/> 
    6. logic:greaterEqual 
          为大于等于比较符。 
          eg. 当某学生的成绩大于等于90时,输出“优秀”: 
               <logic:greaterEqual name="student" property="score" value="90"> 
                  优秀 
            </logic:greaterEqual> 
    7. logic:greaterThan 
          此为大于比较符,使用方法同logic:greaterEqual,略; 
    8. logic:lessEqual 
          此为小于等于比较符,使用方法同logic:greaterEqual,略; 
    9. logic:lessThan 
          此为小于比较符,使用方法同logic:greaterEqual,略; 
    10. logic:match 
          此标签比较对象是否相等; 
          eg1. 检查在request范围内的name属性是否包含"amigo"串:  
            <logic:match name="name" scope="request" value="amigo"> 
                  <bean:write name="name"/>中有一个“amigo”串。 
            </logic:match> 
         eg2. 检查在request范围内的name属性是否已“amigo”作为起始字符串: 
           <logic:match name="name" scope="request" value="amigo" location="start"> 
               <bean:write name="name"/>以“amigo”作为起始字符串。 
            </logic:match> 
         eg3.  
            <logic:match header="user-agent" value="Windows"> 
               你运行的是Windows系统 
            </logic:match> 
    11.  logic:notMatch 
 
          此标签用于比较对象是否不相同,与logic:match意义相反,使用方法类似,略。 
     12. logic:messagePresent 
          该标签用于判断ActionMessages/ActionErrors对象是否存在; 
          eg. 如果存在error信息,将其全部输出: 
               <logic:messagePresent property="error">  
                  <HTML:messages property="error" id="errMsg" >  
                        <bean:write name="errMsg"/>  
                  </html:messages>    
               </logic:messagePresent > 
     13. logic:messagesNotPresent 
          该标签用于判断ActionMessages/ActionErrors对象是否不存在,使用方法与logic:messagePresent类似,略 
      14. logic:present 
           此标签用于判断request对象传递参数是否存在。 
           eg1. user对象和它的name属性在request中都存在时,输出相应字符串: 
              <logic:present name="user" property="name"> 
                  user对象和该对象的name属性都存在 
            </logic:present>  
          eg2. 若有一个名字为“user”的JavaBean,输出对应字符串: 
             <logic:present name="user" > 
                  有一个名字为“user”的JavaBean。 
            </logic:present> 
          eg3.  
            <logic:present header="user-agent"> 
                  we got a user-agent header. 
            </logic:present> 
      15. logic:notPresent 
           此标签用于判断request对象传递参数是否不存在,意义与了logic:present相反,使用方法类似,略。 
      16. logic:redirect 
           该标签用于实现页面转向,可传递参数。 
           eg1. <logic:redirect href="http://www.chinaitlab.com"/> 
        
       17. logic:iterator 
            用于显示列表为collection的值(List ,ArrayList,HashMap等)。 
            eg1. 逐一输出用户列表(userlList)中用户的姓名: 
               <logic:iterate  id="user" name="userList"> 
                  <bean:write name="user" property="name"/><br> 
               </logic:iterate> 
            eg2. 从用户列表中输出从1开始的两个用户的姓名 
               <logic:iterate  id="user" name="userList" indexId="index"  offset="1" length="2"> 
                  <bean:write name="index"/>.<bean:write name="user" property="name"/><br> 
               </logic:iterate> 
            eg3. logic:iterator标签的嵌套举例 
                <logic:iterate id="user" indexId="index" name="userList"> 
                       <bean:write name="index"/>. <bean:write name="user" property="name"/><br> 
                       <logic:iterate id="address" name="user" property="addressList" length="3" offset="1"> 
                           <bean:write name="address"/><br> 
                       </logic:iterate> 
               </logic:iterate> 
 
Struts 的Logic标签可以根据特定的逻辑条件来判断网页的内容,或者循环遍历集合元素,它和HTML,Bean标签是Struts应用种最常用的三个标签.它的功能主要是比较运算,进行字符串的匹配,判断指定的内容是否存在,循环遍历集合,进行请求转发和重定向,下面具体的说明标签的用途: 
 
<logic:equal>变量等于指定的常量 
 
<logic:notEqual>变量不等于指定的常量 
 
<logic:lessThan>变量小于指定的常量 
 
<logic:lessEqual>变量小于或者等于指定的常量 
 
<logic:geraterThan>变量大于指定的常量 
 
<logic:geraterEqual>变量大于或等于指定的常量 
 
以上这些标签都很类似, 有共同的属性,cookie属性指定cookie属性的值,然后用value设置的常量进行比较.header属性设置header请求头的值,也是通过 value属性设置的值进行比较.parameter属性设置一个请求参数,然后也是通过value属性设置的值进行比较.name属性设置一个变量,然后用value比较.如果同时设置了name和property属性,此时name属性指定已经存在的JavaBean,property属性指定 Bean的属性.这个标签感觉十分简单,用法也十分单一,下面研究一下进行字符串匹配的标签和判断特定内容的标签. 
 
<logic:match> 标签是判断变量种是否包含常量字符串的,<logic:netMatch>也判断是否不包含字符串的,用name属性定义一个字符串变量,然后用value属性的值去判断变量是否包含这个字符串或者是不包含这个字符串,判断成功返回true. 
 
<logic:empty>和<logic:netEmpty>标签可以判断指定的变量是否为空的字符串,可以通过name属性来判断一个字符串是否为null.例如是请求参数的字符串. 
 
<logic:present> 和<logic:notPresent>标签可以判断指定的对象是否为空,这个标签的属性很多.cookie属性判断Cookie是否存在.Header属性判断HTPP请求头是否存在.role属性是判断当前的权限的用户是否是指定的安全角色.user属性是判断当前通过权限验证的用户是否拥有指定的用户名.parameter属性是判断请求的参数是否存在.name属性是用来判断指定的Bean是否存在.同时设置name和 property属性就是判断Bean种的具体属性是否存在了. 
 
<logic:messagesPresent> 和<logic:messagesNotPresent>标签是用来判断是否在request范围内的特定的ActionMessages或者是子类ActionErrors对象.name属性是用来检索ActionMessages对象的key,property指定从 ActionMessages集合对象中检索某条消息key也就是具体的ActionMessage对象. 
 
进行循环遍历Logic标签是Logic标签库中最复杂的标签,也是用途最广泛的标签,它能够在一个循环中遍历数组,Collection,Enumeration,Irerator或者Map中的所有元素 
 
1)              遍历集合的标签<logic:iterate> 的name属性指定需要进行遍历的集合对象,它每次从集合中检索出一个元素,然后存放在page范围内,并以id属性指定这个字符串来命名这个元素,最好是在里面嵌套一个<bean:write>标签,把刚刚遍历的第一个id指定的字符串输出,然后在循环在输出.length属性需要遍历的元素的数目,如果没有设置length属性,就遍历集合中的所有元素.offset属性指定开始遍历的其实位置,默认值是0.indexId属性定义一个代表当前被遍历元素的系列号,这个变量存放在page范围内,可以被<bean:write>标签访问输出输出的是int的数字.例如 1.2.3.4等.可以用户输出输出的元素的系列号. 
 
2)              遍历Map 是通过<logic:iterate>标签,name属性指定一个HashMap,存放在request范围,然后赋给id指定的变量,indexId可以指定索引编号,然后通过<bean:write>标签输出出来.在HashMap的每一个元素都是一个集合对象,所以可以嵌套使用.就是说<logic:inerate>这个标签既可以把Collection的元素弄出来负给一个变量也可以弄Map的.所以说它的功能强大.还有一个collection属性可以设置一个表达式,这个表达式返回的结果可以作为,<logic:inerate>标签输出的集合或者Map.这个属性类似name属性. 
 
最后研究一下进行请求转发和重定向的Logic 标签,<logic:forward>标签用于请求转发,它的name属性指定转发的目标,与Struts配置文件中的<global-forwards>元素和的子元素<forward>元素匹配.简单的说就是<logic:forward>标签的name属性定义的值,要去找到<golbal-forwards>子元素<forward>元素的匹配的name属性,然后通过path指定的路径进行转发.重定向用<logic:redierct>标签它的forward,href和page属性指定重定向的目标,这几个属性和<html:link>标签的属性用法十分相似. |   
 
 
 
 |