Struts-Logic 标签库

Struts-Logic 标签库

此标签库可以分为三种类型:条件、循环、转发/重定向。

一.) 条件类型

  1. logic:empty和logic:notEmpty
    logic:empty标签判断脚本变量是否为null,是否是一个空的字符串(长度为0),是否是一个空的collection或map(调用isEmpty()方法来判断)。logic:notEmpty标签类似。
    <logic:empty name="myBean">
       The bean is missing
    </logic:empty>
    <logic:notEmpty name="myBean">
       The bean is not missing
    </logic:notEmpty>
    上段代码表示当一个名为myBean的bean在所有的scope中都不存在时,输出The bean is missing;存在的话输出The bean is not missing。
    此标签有三个属性:name、property和scope。
  2. logic:equal, logic:notEqual, logic:lessThan, logic:greaterThan,logic:lessEqual, and logic:greaterEqual
    这堆logic:*equal*标签从名字上就能知道意思,它们使用起来有些笨拙。
    有如下属性:name、property、scope、value、cookie、header、parameter。
    <logic:equal name="bean" property="doubleProperty" value="<%= doub1 %>">
        equal
    </logic:equal>
    <logic:greaterEqual name="bean" property="doubleProperty" value="<%= doub1 %>">
        greaterEqual
    </logic:greaterEqual>
  3. logic:present和logic:notPresent
    检查header、request parameter、cookie、JavaBean或JavaBean propertie是否存在且不等于null。另外还可以检查当前用户的身份,使用属性user和role。
    其它的属性有:name、property、scope、cookie、header、parameter。
    <logic:notPresent name="myBean" property="prop" scope="page">
    The bean property bean.prop is present
    </logic:notPresent>
    上段代码检查在page作用域内名为myBean的bean是否有一个prop属性。
  4. logic:match和logic:notMatch
    比较两字符串是否相等,可以比较字符串的开始的、结尾的或其中的某个部分。
    location属性:指定从某个位置开始进行比较。
    其它的属性有:name、property、scope、value、cookie、header、parameter。
    下面的例子是检查浏览器类型:
    <logic:match header="User-Agent" value="Mozilla">
    Mozilla!
    </logic:match>
    <logic:notMatch header="User-Agent" value="Mozilla">
    Not Mozilla :(
    </logic:notMatch>

    检查bean属性是否匹配"hello world"字符串:
    <logic:match name="bean" property="stringProperty" value="hello world">
    Hello World!
    </logic:match>
    <logic:notMatch name="bean" property="stringProperty" value="hello world">
    I'm so sad and lonely.
    </logic:notMatch>

    检查名为"name"的请求参数是否是"xyz"的子字符串,但是子字符串必须从"xyz"的索引位置1开始(也就是说子字符串必须是"y"或"yz"):
    <logic:match parameter="name" value="xyz" location="1">
          The parameter name is a sub-string of the string xyz from index 1
    </logic:match>

二.) 循环类型

logic:iterate
重复嵌套在此标签体内的指定集合的元素,集合必须为如下类型:array 、Collection(包括ArrayList和Vector)、Enumeration、Iterator、Map(包括HashMap、Hashtable和TreeMap)。例如:

<logic:iterate id="employee" name="department" property="employees" scope= "request">

<bean:write name="employee" property="username" />

<bean:write name="employee" property="name" />

<bean:write name="employee" property="phone" />

</logic:iterate>
上面的代码迭代了一个employee的集合,是department属性employees的一个集合,作用域为request。

为了输出第五个到第十个employee,需要使用length和offset属性:
<logic:iterate id="employee" name="department" property="employees" scope= "request" length="10" offset="5">

<bean:write name="employee" property="username" />

<bean:write name="employee" property="name" />

<bean:write name="employee" property="phone" />

</logic:iterate>

你可以定义一个变量保存当前的索引值:      
<ol>
<logic:iterate id="element" name="bean" property="stringArray" indexId="index">
<li>
<em>
<bean:write name="element"/>
</em>&nbsp;
[<bean:write name="index"/>]</li>
</logic:iterate>
</ol>

三.) 转发/重定向类型

logic:forward和logic:redirect
logic:forward标签和jsp:forward标签和相似,但它可以使用global forward中的一个ActionForward:

<logic:forward name="login" />
----------------------------------------------------------------------------------------------------------------------------------
与上面相关的global forward中的代码:
<global-forwards>
<forward name="login" path="/loginForm.jsp"/>
</global-forwards>

logic:redirect标签和上面的标签类似,但它默认调用的方法是response.sendRedirect(),取代了上面的requestDispatcher.forward()。最大的不同是它支持所有html:link标签的属性,所以你能够指定request参数:
<logic:redirect name="login" paramId="employeeId" paramName="employee" property="id" />

posted on 2009-01-07 14:05  Squall  阅读(787)  评论(0编辑  收藏  举报

导航