现在的位置: 首页 > 综合 > 正文

Struts Logic标记库

2013年06月29日 ⁄ 综合 ⁄ 共 4396字 ⁄ 字号 评论关闭
 

Struts Logic标记库
 
逻辑库的标记能够用来处理外观逻辑而不需要使用scriptlet。Struts逻辑标签库包含的标记能够有条件地产生输出文本,在对象集合中循环从而重复地产生输出文本,以及应用程序流程控制。它也提供了一组在JSP页中处理流程控制的标记。这些标记封装在文件名为struts-logic.tld的标记包中。
 
一、             比较标记
 
标记
功能
<logic:equal>
如果常数与被定义的实体相等,返回true
<logic:notEqual>
如果常数与被定义的实体不相等,返回true
<logic:greaterEqual>
如果常数大于等于被定义的实体,返回true
<logic:lessEqual>
如果常数小于等于被定义的实体,返回true
<logic:lessThan>
如果常数小于被定义的实体,返回true
<logic:greaterThan>
如果常数大于被定义的实体,返回true
 
这一类的所有标记有相同的属性
属性
描述
Value
要进行比较的常数值
Cookie
要进行比较的HTTP cookie的名称
Header
要进行比较的HTTP请求标头的名称
parameter
要进行比较的HTTP请求参数的名称
Name
如果要进行比较的是bean或bean的属性,则这个属性代表bean的名称
property
要进行比较的bean属性的名称
Scope
Bean的作用域,如果没有指定作用域,则它的搜索范围是从页到应用程序
 
<logic:equal value="localhost:8080" header="host">
    主机地址为localhost:8080
</logic:equal>
从HTTP请求中读出host信息,与value属性所指定的值进行比较,当相同时输出“主机地址为localhost:8080的信息。
 
 
二、             <logic:iterate>标记
用于面页面中创建一个循环,以此来遍历如数组、Collection、Map、List这样的对象。
属性
描述
collection
如果没有设置name属性,它就指定了要进行重复的集合
Id
页作用域bean和脚本变量的名称,它保存着集合中当前元素的句柄
indexed
存放当前集合中正被访问的元素的序号
Length
指定了输出元素的个数
Name
作为集合的bean的名称,或是一个bean名称,它由property属性定义的属性,是个集合
Offset
从第几个元素开始输出
property
作为集合的Bean属性的名称
Scope
如果指定了bean名称,这个属性设置bean的作用域。若没有设置,搜索范围从页到应用程序作用域
Type
为当前定义的页作用域bean的类型
 
 
1 遍历数组
<%
    String[] array={"中国","日本","法国","美国","意大利"};
    pageContext.setAttribute("array",array);
 %>
 <logic:iterate id="arrayValue" name="array">
    <bean:write name="arrayValue"/>
 </logic:iterate>
 
从第2个元素开始输出,共输出2个元素。
<logic:iterate id="arrayValue" name="array" length="2" offset="2">
    <bean:write name="arrayValue"/>
 </logic:iterate>
 
从第1元素开始输出,共输出4个元素,且带有序号。
<logic:iterate id="arrayValue" name="array" length="4" offset="1" indexId="number">
    <bean:write name="number"/>
    <bean:write name="arrayValue"/><br/>
 </logic:iterate>
 
 
2 遍历HashMap
<%
    HashMap map=new HashMap();
    map.put("country1","中国");
    map.put("country2","日本");
    map.put("country3","法国");
    map.put("country4","美国");
    map.put("country5","意大利");
    pageContext.setAttribute("map",map);
 %>
 <logic:iterate id="mapValue" name="map">
    <bean:write name="mapValue" property="key"/>
    <bean:write name="mapValue" property="value"/><br/>
 </logic:iterate>
 
    注意:
1 HashMap的输出是无序的,用LinkedHashMap则是有序输出的。
2 键值的property一定要指定为key和value。
 
3 遍历List
<%
    ArrayList list=new ArrayList();
    list.add("中国");
    list.add("日本");
    list.add("法国");
    list.add("美国");
    list.add("意大利");
    pageContext.setAttribute("list",list);
 %>
 <logic:iterate id="listValue" name="list" indexId="number">
    <bean:write name="number" />
    <bean:write name="listValue"/><br/>
 </logic:iterate>
 
4 嵌套遍历
<%
    String[] colors={"red","green","blue","white","black"};
    String[] countries={"中国","日本","法国","美国","意大利"};
    String[] persons={"张三","李四","王五","赵六","刘七"};
   
    ArrayList list=new ArrayList();
    list.add(colors);
    list.add(countries);
    list.add(persons);
    pageContext.setAttribute("list",list);
 %>
 <logic:iterate id="first" name="list" indexId="numberfirst">
    <bean:write name="numberfirst"/>
    <logic:iterate id="second" name="first">
        <bean:write name="second"/>
    </logic:iterate>
    <br/>
 </logic:iterate>
 
 
三、           Match标记
Match标记的功能有些类似于java.lang.String类中的indexOf()方法。
 
<logic:match>:判断变量是否包含指定的常量字符串。
<logic:notMatch>:判断变量是否不包含指定的常量字符串。
 
这些标记允许JSP引擎在发现了匹配或是没有发现时计算标记主体。属性如下:
 
属性
描述
Cookie
要进行比较的HTTP cookie的名称
Header
要进行比较的的HTTP标头 的名称
parameter
要进行比较的的HTTP请求参数的名称
Name
若要对bean或bean的属性进行比较,这个属性是用户指定bean的名称
location
有两个值start表示是否以此字符串开头,end表示是否以此字符串结尾.
scope
如果对bean进行比较,这个属性指定了bean的作用域。如果没有设置这个参数,搜索范围是从页到应用程序作用域
property
要进行比较的bean的属性名称
value
要进行比较的常数值
 
判断name中是否包含value,为true时,输出。
<%
    pageContext.setAttribute("str","Hello,World!");
 %>
 <logic:match name="str" value="Hello">
    包含<bean:write name="str"/>
 </logic:match>
 
判断naem中是否以value结尾,为true时,输出。
<%
    pageContext.setAttribute("str","Hello,World!");
 %>
 <logic:match name="str" value="Hello" location="end">
    包含<bean:write name="str"/>
 </logic:match>
 
注意:location属性的start和end有点类似于java.lang.String类的startWith()和endWith()方法。
 
四、           Presence标记
 
1 <logic:present>和<logic:notPersent>
用于判断所指定的对象是否存在。
 
属性
描述
Cookie
由这个属性指定的cookie将被检查是否存在
Header
由这个属性指定的请求标头将被检查是否存在
parameter
由这个属性指定的请求参数将被检查是否存在
Name
如果没有设置property属性,那么有这个属性指定的bean将被检查是否存在。如果设置了,那么bean和bean属性都将被检查是否存在。
property
检查有name属性指定的bean中是否存在指定的属性
Scope
如果指定了bean的名称,这就是bean的作用域。如果没有指定作用域,搜索的范围从页到应用程序作用域。
Role
检查当前已经确认的用户是否属于特殊的角色
User
检查当前已经确认的用户是否有特定的名称
<%
    pageContext.setAttribute("str","Hello,World!");
 %>
 <logic:notPresent name="strvalue" property="str" scope="page">
    页面内存在str对象,其值是${str}!
</logic:notPresent>
 
2 <logic:messagesPresent>和<logic:messagesNotPresent>
用于判断是否在request范围内存在特定的ActionMessages或ActionErrros对象。
 

抱歉!评论已关闭.