Struts logic标签

1),empty

logic:empty标签是用来判断是否为空的。如果为空,该标签体中嵌入的内容就会被处理。该标签用于以下情况:

当Java对象为null时 
当String对象为""时 
当java.util.Collection对象中的isEmpty()返回true时 
当java.util.Map对象中的isEmpty()返回true时 
下面的代码示例了logic:empty标签判断集合persons是否为空:
<logic:empty name="listForm" property = "persons">
 <div>集合persons为空!</div>
</logic:empty>

logic:notEmpty标签的应用正好和logic:empty标签相反。

2),equal

equal检查给定的属性(或扩展属性)是否等于一个给定值。如果是这样的话,equal标签的标签体便会被执行。

notEqual是equal的逆命题。

1. 使用限制

value属性是必需的。

2. 属性

base-attrs和exprop-attrs属性集都是接受的。还有一个额外的value属性,它是属性或扩展属性将要与之比较的一个常数值。

以下例子展示了,如果变量var1等于“Joe”,”logic:equal”标签将会处理嵌套的”bean:write”标签。
<logic:equal name="var1" value="joe">
 <bean:write name="var1"/>
</logic:equal>

下一个例子说明parameter属性的使用。

<logic:equal parameter="userName" value="tom">
 hello tom!
</logic:equal>

标签体部分只有在请求URL中具有一个值为tom的名为userName的参数才会被执行。如果有不只一个这样的参数,URL上第一个遇到的参数将被使用。

还可以使用scope变量来指定在其中查找一个bean的作用域。

<logic:equal name="MyBean" property="userId" scope="session" value="tom">
 <bean:write name="MyBean" property="userId"/>
</logic:equal>

3)forward

我觉得将forward和redirect这两个动作放到一起对比着介绍更加有利于理解,基于此原因也就将logic:forward和logic:redirect这两个标签也拿到这里一起介绍了。

    forward是在servlet内部执行,浏览器完全不会感知到这个动作,原始的url也不会改变,浏览器重新装载的话也只是对原始的请求进行简单的重复。 

redirect则分成两个步骤:第一步是web应用程序告诉浏览器第二个url,然后浏览器向第二个url发送请求。 

redirect比forward慢,因为浏览器要做二次请求。还有就是要注意,在第一次的请求作用域(request作用域)内的bean对于第二次请求是不可见的。

理解了上面描述的区别也就知道了什么时候该选用logic:forward标签什么时候该选用logic:redirect标签了。logic:forward标签完成PageContext.forward()或HttpServletResponse.sendRedirect(),如何选择由控制器决定。logic:redirect标签完成HttpServletResponse.sendRedirect()。

例子:

<logic:forward name="welcome"/>

welcome 是配置在struts里面的全局转发变量,大致这样

<global-forwards>

<forward name="welcome" path="/welcome.jsp">

</global-forwards>
在使用logic:redirect标签时我们可以向使用html:link一样构造baseurl和query参数。如果您感兴趣可以参考html:link标签。

4)greaterEqual

greaterEqual是一个有条件标签,只有在给定的属性(或扩展属性)大于或等于由value属性给出的常数值的时候,其标签体才会被执行。本组中的其他标签也是类似定义的。

注意,如果值不是一个数值,它会被解释为一个字符串,并且会执行字符串之间的比较(使用Java的标准字符串比较)。

1. 使用限制

value属性是必需的。

2. 属性

base-attrs和exprop-attrs属性集都是接受的。还有一个额外的value属性,它是属性或扩展属性将要与之比较的一个常数值。

3. 示例

下面的例子展示了使用”logic:greaterThan”标签来在变量maxId大于或等于10的时候处理嵌套的标签(没有具体展示出来)。

<logic:greaterEqual name="maxId" value="10">
//....
</logic:greaterEqual>

再说明下cookie属性的使用。

<logic:greaterEqual cookie="use_num" name="maxId" value="10">
//....
</logic:greaterEqual>
只有当称做use_num的cookie大于等于10的时候才会执行 //....

5)greaterThan

意为:大于

属性等定义,请参考 greaterEqual 标签说明

示例:

<logic:greaterThan name="maxId" value="10">
//....
</logic:greaterThan>

再说明下cookie属性的使用。

<logic:greaterThan cookie="use_num" name="maxId" value="10">
//....
</logic:greaterThan>

6)iterate

id 脚本变量的名称,它保存着集合中当前元素的句柄。
name 代表了你需要叠代的集合,来自session或者request的属性。
type 是其中的集合类元素的类型

bean的write标记是用来将属性输出的,name用来匹配iterate的id,property用来匹配相应类的属性<logic:iterate>用法详解22007-04-04 20:34<login:iterate>标记用于在页面中创建一个循环,以此来遍历如数组、Collection、Map这样的对象。该标记的功能强大,在Struts应用的页面中经常使用到。
1、对数组进行循环遍历
  使用<logic:iterate>标记可以用于遍历数组,以下是一段示例代码:
程序代码

    <%   

    String[] testArray={"str1","str2","str3"};    

    pageContext.setAttribute("test",testArray);    

    %>  

    <logic:iterate id="show" name="test">    

    <bean:write name="show"/>    

    </logic:iterate>  

  在上面的代码中,首先定义了一个字符串数组,并为其初始化。接着,将该数组存入pageContext对象中,命名为test1。然后使用<logic:iterate>标记的name属性指定了该数组,并使用id来引用它,同时使用<bean:write>标记来将其显示出来。其结果为:

    str1    

    str2    

    str3   

  另外,还可以通过length属性来指定输出元素的个数。如下面的代码:
程序代码

    <logic:iterate id="show" name="test" length="2" offset="1">    

    <bean:write name="show"/>    

    </logic:iterate>  

  其中length属性指定了输出元素的个数,offset属性指定了从第几个元素开始输出,如此处为1,则表示从第二个元素开始输出。所以该代码的运行结果应当输出:

    str2   

    str3  

  另外,该标记还有一个indexId属性,它指定一个变量存放当前集合中正被访问的元素的序号,如:
程序代码

    <logic:iterate id="show" name="test" length="2" offset="1" indexId="number">    

    <bean:write name="number"/>:<bean:write name="show"/>    

    </logic:iterate>  

其显示结果为:

    1:str2    

    2:str3   

2、对HashMap进行循环遍历
    程序代码

    <%   

    HashMap countries=new HashMap();   

    countries.put("country1","中国");   

    countries.put("country2","美国");   

    countries.put("country3","英国");   

    countries.put("country4","法国");   

    countries.put("country5","德国");   

    pageContext.setAttribute("countries",countries);    

    %>  

    <logic:iterate id="country" name="countries">    

    <bean:write name="country" property="key"/>:   

    <bean:write name="country" property="value"/>    

    </logic:iterate>  

 在bean:write中通过property的key和value分别获得HaspMap对象的键和值。其显示结果为:

    country5:德国    

    country3:英国    

    country2:美国    

    country4:法国    

    country1:中国   

 由结果可看出,它并未按添加的顺序将其显示出来。这是因为HaspMap是无序存放的。

3、嵌套遍历
    程序代码

    <%   

    String[] colors={"red","green","blue"};   

    String[] countries1={"中国","美国","法国"};   

    String[] persons={"乔丹","布什","克林顿"};   

    ArrayList list2=new ArrayList();   

    list2.add(colors);   

    list2.add(countries1);   

    list2.add(persons);   

    pageContext.setAttribute("list2",list2);   

    %>  

    <logic:iterate id="first" name="list2" indexId="numberfirst">  

    <bean:write name="numberfirst"/>  

    <logic:iterate id="second" name="first">  

    <bean:write name="second"/>  

    </logic:iterate>  

    <br>  

    </logic:iterate>  

 运行效果:

    red green blue    

    中国 美国 法国    

    乔丹 布什 克林顿   

7)lessEqual

意为:小于等于

属性等定义,请参考 greaterEqual 标签说明

示例:

<logic:lessEqual name="maxId" value="10">
//....
</logic:lessEqual>

再说明下cookie属性的使用。

<logic:lessEqual cookie="use_num" name="maxId" value="10">
//....
</logic:lessEqual>

8)lessThan

意为:小于

属性等定义,请参考 greaterEqual 标签说明

示例:

<logic:lessThan name="maxId" value="10">
//....
</logic:lessThan>

再说明下cookie属性的使用。

<logic:lessThan cookie="use_num" name="maxId" value="10">
//....
</logic:lessThan>

9)match

logic:match标签用来处理子串匹配问题。

match标签将在一个在给定属性(或扩展属性)包含作为一个子串的value属性的时候执行其标签体的条件处理标签。notMatch是match的逆命题。

1. 使用限制

value属性是必需的。

2. 属性

base-attrs和exprop-attrs属性集都是可接受的,并且具有它们的通常意义。除这些之外,还有两个额外的属性:

 value:属性或扩展属性将要匹配的一个常数子串。例如,如果属性或扩展属性等于字符串“Visit Zimbabwe”,那么value="im"将导致一次匹配,而value="Zic"则不会。

 location:此属性值可以取值start或者end,指定在源字符串内部可以从哪里发生匹配。如果忽略,匹配可以从任何地方开始。

3. 示例

下面是查找一个具有.cn后缀的电子邮件地址的简单例子:
 <logic:match name="MyBean" property="email" value=".cn" location="end">
 //....
 </logic:match>


也可以询问HTTP请求头:
<logic:present header="User-Agent">
 <logic:match header="User-Agent" value="MSIE 6.0">
 MS IE 6.0
 </logic:match>
</logic:present> 

logic:notMatch标签的应用正好和logic:match标签相反。

10)present

如果指定的值出现该标签就会创建其标签体内的内容。该标签用于以下情况:

 

检查具有指定名称的cookie是否出现。 

检查具有指定名称的header是否出现。 

检查具有指定名称的JSP Bean是否出现 或 检查具有指定名称的JSP Bean中的property属性是否出现。 

检查request中指定名称的参数是否出现。 

检查当前的认证用户是否与指定的安全角色相关联。 

检查当前认证的主体是否具有指定的名字。 


下面的代码示例了logic:present标签检查具有指定名称User-Agent的header是否出现:

<logic:present header="User-Agent">

 您的浏览器是<bean:header id="userAgent" name="User-Agent"/>

 <bean:write name="userAgent"/>。<br/>

</logic:present>


检查某个对象是否存在

<logic:present name="myObject">

it is present
</logic:present>

检查某个对象的某个属性是否为null

<logic:present name="myObject" property="id">

id is present
</logic:present>

还可以检查当前经过认证的用户名:

<logic:present  user="tom">

hello
</logic:present>

或者该当前认证用户具有任何指定的角色:

<logic:present  role="admin,staff">

welcome..
</logic:present>
logic:notPresent标签的应用正好和logic:present标签相反。

11)redirect

该标签用于实现页面转向,可传递参数。
例如. <logic:redirect href="http://www.chinaitlab.com"/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值