posts - 70,comments - 408,trackbacks - 0

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>标签的属性用法十分相似.

关于标签的部分我就说到这里,因为我个人觉得在Struts中最常用的无非也就是这三个标签库了.我以前还写过一个Struts的分页应用,过些天继续发布到我的Blog上. (网友们的支持,是我继续写技术文章的动力!)

posted on 2005-11-01 21:31 我心依旧 阅读(30811) 评论(26)  编辑  收藏

FeedBack:
# re: Struts标签-Logic(原创)
2006-01-13 21:50 | tanxiaoming
您的文章写道真不错哦  回复  更多评论
  
# re: Struts标签-Logic(原创)
2006-02-06 16:34 | li
没有具体的实例,不容易理解!  回复  更多评论
  
# re: Struts标签-Logic(原创)
2006-02-24 09:48 | 路过
<logic:geraterThan>变量大于指定的常量

<logic:geraterEqual>变量大于或等于指定的常量

应该是greaterThan,greaterEqual吧  回复  更多评论
  
# re: Struts标签-Logic(原创)
2006-03-01 21:37 | tomcat
<logic:iterate id="list" name="actionForm" property="infoList" indexId="index">
<logic:equal name="index" vlaue="0">
<INPUT type="checkbox" name="check" value="chk" checked>
</logic:equal>
<logic:notEqual name="index" vlaue="0">
<INPUT type="checkbox" name="check" value="chk">
</logic:notEqual >
<bean:write name="list" property="name" />
<bean:write name="list" property="address" >
</logic:iterate>  回复  更多评论
  
# re: Struts标签-Logic(原创)
2006-03-01 21:39 | tomcat
<bean:write name="list" property="address" />
呵呵
  回复  更多评论
  
# re: Struts标签-Logic(原创)
2006-03-07 17:41 | 7737
看了你的文章,提个问题,在进行<logic:equal>进行判断时,如何能解决下面的问题?
int a=0;
int b=0;
if(a==b)
<logic:equal name="aa" property="aaa" value="1">
只能对常量进行比较,那么在使用struts标签时,怎样解决变量与变量之间的比较?  回复  更多评论
  
# re: Struts标签-Logic(原创)
2006-03-27 11:16 | 我的生活,我做主
看了你的文章,觉的写的不错。想提个问题。
我想判断或的关系,改怎么用struts的标签写。
  回复  更多评论
  
# re: Struts标签-Logic(原创)
2006-04-05 21:04 | gaujg
请问怎么能实现不同的行显示不同的颜色或者引用不同的css?  回复  更多评论
  
# re: Struts标签-Logic(原创)
2006-04-13 09:42 | zhyiwww
总结的不错,好好学习一下  回复  更多评论
  
# re: Struts标签-Logic(原创)
2006-05-10 19:43 | ttt
怎样用struts标签实现:把从后台传来的一个数据list在页面上遍力输出啊  回复  更多评论
  
# re: Struts标签-Logic(原创)
2006-08-23 11:09 | gg
@ttt
<logic:iterate id="element" name="userList">
<tr>
<td align="center"><bean:write name="element"/> </td>
</tr>
</logic:iterate>  回复  更多评论
  
# re: Struts标签-Logic(原创)
2006-10-24 17:57 | ray[匿名]
没有实例比较难理解!  回复  更多评论
  
# re: Struts标签-Logic(原创)
2006-10-26 23:34 | alex[匿名]
我对logic的这些标签的理解就是 它们是一个容器 你可以入东西到里面去 然后他们自动来判断或者遍历 你根据会产生结果 来显示自己所要的东西~~   回复  更多评论
  
# re: Struts标签-Logic(原创)
2006-12-15 16:29 | dsfdsf
能不能举个例子不抄书呢  回复  更多评论
  
# re: Struts标签-Logic(原创)
2007-04-23 17:08 | loy
看过了,写的还可以  回复  更多评论
  
# re: Struts标签-Logic(原创)
2007-08-26 12:31 | Zealot
@7737
用el表达式  回复  更多评论
  
# re: Struts标签-Logic(原创)
2007-09-17 15:50 | 同声传译
同传租赁 同声传译翻译公司 同声传译设备租赁 同声传译 同传租赁 同声传译 同声传译设备租赁 同传租赁
  回复  更多评论
  
# re: Struts标签-Logic(原创)
2007-10-19 23:30 | nn
有些标签都不知道怎么用。  回复  更多评论
  
# re: Struts标签-Logic(原创)
2008-01-07 13:43 | java综合网
java综合网
不错,不错~~~  回复  更多评论
  
# re: Struts标签-Logic(原创)
2008-01-16 12:06 | rookie
写得不错,学习学习,辛苦了  回复  更多评论
  
# re: Struts标签-Logic(原创)
2008-01-21 14:38 | chenle
有个list,我想让list里的值在页面上每五个换行显示,怎么写逻辑条件?  回复  更多评论
  
# re: Struts标签-Logic(原创)
2008-03-02 16:48 | shan
<logic:iterate>标签有个indexId属性,我们可以通过indexId的值来判断,如果”(indexId+1)%5==0“,则输出<br>直接换行即可
例:
<logic:iterate id="element" property="userList" name="userForm" indexId="index">
<c:if test="${(index+1)%5 == 0}">
<br>
</c:if>
</logic:iterate>

  回复  更多评论
  
# re: Struts标签-Logic(原创)
2008-03-21 19:56 | 一笑而过
看了你几篇文章,错别字太多了,虽然你是用拼音输入,勉强猜得到中文汉字,但是这只也说明你专业风格上不严谨,希望你还是改正这个不好的习惯吧,你的文章还是可以的。
建议你使用搜狗拼音输入法吧,连起来可能错别字会少一些的。  回复  更多评论
  
# re: Struts标签-Logic(原创)[未登录]
2008-06-06 15:15 | a
请问:# re: Struts标签-Logic(原创)2008-03-02 16:48 | shan

<logic:iterate>标签有个indexId属性,我们可以通过indexId的值来判断,如果”(indexId+1)%5==0“,则输出<br>直接换行即可
例:
<logic:iterate id="element" property="userList" name="userForm" indexId="index">
<c:if test="${(index+1)%5 == 0}">
<br>
</c:if>
</logic:iterate>
种的<c:if>是怎么得来的?  回复  更多评论
  
# re: Struts标签-Logic(原创)
2008-10-14 13:52 | laji
真佩服博主的 文笔,咋读都不通顺哈  回复  更多评论
  
# re: Struts标签-Logic(原创)[未登录]
2008-11-10 19:58 | 王鹏
需要SSH的分页自定义标签 是否有难度。。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: