Struts Logic标记库(转)

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对象。
 
属性 描述
Name 指定了ActionMessages在request或session对象内存储时的key值。
message 为true时,表示使用Globals.MESSAGE_KEY作为request对象中获取ActionMessages的key值,此时无论name指定什么都无效;为false时,则表示从name属性所指定的值作为request对象中获取ActionMessages的key值,
若不设置name属性的值,则使用用默认的Globals.MESSAGE_KEY.
parameter 由这个属性指定的请求参数将被检查是否存在
property 检查ActionMessages对象中某条特定消息的key值。

<%
    ActionMessages messages = new ActionMessages();
    messages.add("msg", new ActionMessage("default.message"));
    request.setAttribute(org.apache.struts.Globals.MESSAGE_KEY,messages);
%>
<logic:messagesPresent message="true" property="msg">
    所查找的ActionMessages的值是:<bean:message key="default.message" name="msg"/>
</logic:messagesPresent>
 
 
五、 Empty标记
<logci:empty>和<logic:notEmpty>
用于判断所指定的字符串是否为空。
<%
    pageContext.setAttribute("test1","");
    pageContext.setAttribute("test2","hello");
 %>
 <logic:empty name="test1" scope="page" >
    test1为空
 </logic:empty>
<logic:notEmpty name="test2" scope="page">
    test2不为空!其值是:<bean:write name="test2"/>
</logic:notEmpty>
 
六、           转发和重定向标记
1 转发标记<logic:forward>
<logic:forward>标记能够将响应转发给重定向到特定的全局ActionForward上。ActionForward的类型决定了是使用PageContext转发响应,还是使用sendRedirect将响应进行重定向。此标记只有一个”name”属性,用来指定全局ActionForward的名称,例如:
<logic:forward name=”myGlobalForward”/>
 
2 重定向标记<logic:redirect>
<logic:redirect>标记是一个能够执行HTTP重定向的强大工具。根据指定的不同属性,它能够通过不同的方式实现重定向。它还允许开发人员指定重定向URL的查询参数。属性如
下:
属性 描述
Forward 映射了资源相对路径的ActionForward
Href 资源的完整URL
Page 资源的相对路径
Name Map类型的页名称,请求,会话或程序属性的名称,其中包含要附加大哦重定向URL(如果没有设置 property属性)上的“名称-值”参数。或是具有Map类型属性的bean名称,其中包含相同的信息(没有设置property属性)
Property Map类型的bean属性的名称。Bean的名称由name属性指定。
Scope 如果指定了bean的名称,这个属性指定搜索bean的范围。如果没有设置,搜索范围从页到应用程序作用域
ParamID 定义特定查询参数的名称
ParamName 字符串类型的bean的名称,其中包含查询参数的值(如果没有设置paramProperty属性);或是一个bean的名称,它的属性(在paramProperty属性中指定)包含了查询参数值
paramProperty 字符串bean属性的名称,其中包含着查询参数的值
ParamScope ParamName定义的bean的搜索范围

 
使用这个标记时至少要指定forward,href或page中的一个属性,以便标明将响应重定向到哪个资源。


                                              转载自:http://blog.csdn.net/zerolsy/archive/2008/06/24/2582500.aspx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值