Chinaunix首页 | 论坛 | 博客
  • 博客访问: 334846
  • 博文数量: 329
  • 博客积分: 2633
  • 博客等级: 少校
  • 技术积分: 3633
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-22 15:43
文章分类

全部博文(329)

文章存档

2013年(244)

2012年(46)

2011年(39)

我的朋友

分类: 系统运维

2012-03-20 14:05:28

 

1.logic:empty
该标签是用来判断是否为空的。如果为空,该标签体中嵌入的内容就会被处理。该标签用于以下情况:
1
)当Java对象为null时;
2
)当String对象为""时;
3
)当java.util.Collection对象中的isEmpty()返回true时;
4
)当java.util.Map对象中的isEmpty()返回true时。
eg.
该句等同于:
if (userList.isEmpty()) {
...
}
2. logic:notEmpty
该标签的应用正好和logic:empty标签相反。
3. logic:equal
该标签为等于比较符
eg1.
比较用户的状态属性是否1,若为1,输出"启用";
eg2.
如果上例中的value值是动态获得的,例如需要通过bean:write输出,因struts不支持标签嵌套,可采用EL来解决该问题。
4. logic:notEqual
该标签意义与logic:equal相反,使用方法类似,略。
5. logic:forward
该标签用于实现页面导向,查找配置文件的全局forwardstruts-config.xml文件中全局转向
eg.
6. logic:greaterEqual
大于等于比较符
eg.
当某学生的成绩大于等于60时,输出及格

及格

7. logic:greaterThan
此为大于比较符,使用方法同logic:greaterEqual;
8. logic:lessEqual
此为小于等于比较符,使用方法同logic:greaterEqual;
9. logic:lessThan
此为小于比较符,使用方法同logic:greaterEqual;
10. logic:match
此标签比较对象是否相等
eg1.
检查在request范围内的name属性是否包含"hello"串:

中有一个“hello”串。

eg2.
检查在request范围内的name属性是否已“hello”作为起始字符串:

“hello”作为起始字符串。

eg3.

你运行的是Windows系统

11. logic:notMatch
此标签用于比较对象是否不相同,与logic:match意义相反,使用方法类似
12. logic:messagePresent
该标签用于判断ActionMessages/ActionErrors对象是否存在
eg.
如果存在error信息,将其全部输出:





13. logic:messagesNotPresent
该标签用于判断ActionMessages/ActionErrors对象是否不存在,使用方法与logic:messagePresent类似
14. logic:present
此标签用于判断request对象传递参数是否存在
eg1. user
对象和它的name属性在request中都存在时,输出相应字符串:

user
对象和该对象的name属性都存在

eg2.
若有一个名字为“hello”JavaBean,输出对应字符串:

有一个名字为“hello”JavaBean

eg3.

we got a user-agent header.

15. logic:notPresent
此标签用于判断request对象传递参数是否不存在,意义与了logic:present相反,使用方法类似。
16. logic:iterator
用于显示列表为collection的值(List ,ArrayList,HashMap等)。
eg1.
逐一输出用户列表(empList)中用户的姓名:




eg2.
从用户列表中输出从1开始的两个用户的姓名

.


eg3. logic:iterator
标签的嵌套举例

.






17. logic:redirect
该标签用于实现页面转向,可传递参数
eg.

 

以下是一些例子:

logic:iterate
logic:iterate
标签用来迭代集合,您可以使用如下方式来为这个标签指定其要叠代的集合:
使用一个运行时表达式,这个表达式的值是一个集合。
name属性引用一个JSP Bean,这个JSP Bean本身就是一个集合。
name属性引用一个JSP Bean,这个JSP Bean的一个属性是一个集合,这时可以联合使用property来指定这个集合。
上面所提到的集合可以是:
对象类型或原子类型的数组(Array)
java.util.Collection
的实现,包括ArrayListVector
java.util.Enumeration
的实现。
java.util.Iterator
的实现。
java.util.Map
的实现,包括HashMapHashtableTreeMap
如果您叠代的集合中含有null的值,这时需要采取一定的措施,因为这时logic:iterate不会在page作用域中创建对象。一般是使 标签或标签来判断一下。
下面是logic:iterate叠代ArrayList的示例的对象引用关系和部分代码:
图示 3. logic:iterate中对象的引用关系

图中的persons列表是在ListAction中填充的,在这里只是简单的加入了三个Person对象,在实际的应用中这些数据应该取自数据库。具体的代码如下:
public ActionForward execute(ActionMapping mapping,ActionForm. form,
    HttpServletRequest request,   HttpServletResponse response) {
ListForm. listForm. = (ListForm) form; 
List persons = new ArrayList();
Person person1 = new Person();
person1.setId("00001");
person1.setName("
赵辰");
Person person2 = new Person();
person2.setId("00002");
person2.setName("
李为芳");
Person person3 = new Person();
person3.setId("00003");
person3.setName("
王微");
persons.add(person1);
persons.add(person2);
persons.add(person3);
listForm.setPersons(persons); 
return mapping.findForward("success");
}

标签输出的结果为:
00001-->
赵辰
00002-->
李为芳
00003-->
王微

回页首
logic:present
如果指定的值出现该标签就会创建其标签体内的内容。该标签用于以下情况:
检查具有指定名称的cookie是否出现。
检查具有指定名称的header是否出现。
检查具有指定名称的JSP Bean是否出现 检查具有指定名称的JSP Bean中的property属性是否出现。
检查request中指定名称的参数是否出现。
检查当前的认证用户是否与指定的安全角色相关联。
检查当前认证的主体是否具有指定的名字。
下面的代码示例了logic:present标签检查具有指定名称User-Agentheader是否出现:

您的浏览器是
   



logic:notPresent
标签的应用正好和logic:present标签相反。
回页首
logic:messagesPresent
logic:messagesPresent
标签用于以下情况:
request作用域中存在一个ActionMessages对象,标签的property属性和ActionMessages中的property对应。
request作用域中存在一个ActionErrors对象,标签的property属性和ActionErrors中的property对应。
存在一个String对象,将其转换(构造)ActionMessage然后在添加到ActionMessages中。
存在一个String Array对象,将数组中的每一个String转换成一个ActionMessage,在将其添加到ActionMessages中。
标签的message属性值为true时将以Globals.MESSAGE_KEYkeyrequest作用域中查找Message,其它情况下, name的值作为key查找,如果name 没有出现,默认值为Globals.ERROR_KEY

下面的代码示例了logic:messagesPresent标签的典型用法:




       



  

标签logic:messagesNotPresent的应用正好和logic:messagesPresent的应用相反。

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

Java对象为null
String对象为""
java.util.Collection对象中的isEmpty()返回true
java.util.Map对象中的isEmpty()返回true
下面的代码示例了logic:empty标签判断集合persons是否为空:


集合persons为空!
      
   

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

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

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

检查具有指定名称的cookie是否与该标签的value匹配。
检查具有指定名称的header是否与该标签的value匹配。
检查具有指定名称的JSP Bean是否与该标签的value匹配 检查具有指定名称的JSP Bean中的property属性值是否与该标签的value匹配。
检查request中指定名称的参数值是否与该标签的value匹配。

下面的代码示例了logic:match标签的典型用法:



    MS IE 6.0

   

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

回页首
logic:equal
这里要介绍的不只是logic:equal(=)标签,而是要介绍一类标签,这类标签完成比较运算,包括:

logic:equal(=)
logic:notEqual(!=)
logic:greaterEqual(>=)
logic:lessEqual(<=)
logic:graterThan(>)
logic:lessThan(<)
该类标签的用法类似,我们只介绍logic:equal标签,其它的留给您自己去完成。

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

比较由该标签的cookie属性指定的cookie的值是否与该标签的value属性值相等。
比较由该标签的header属性指定的header的值是否与该标签的value属性值相等。
比较由该标签的name属性指定的JSP Bean是否与该标签的value属性值相等(property属性不出现)或比较由该标签的name属性指定的JSP Bean中的property属性值是否与该标签的value属性值相等。
比较由该标签的parameter属性指定的参数值(request)是否与该标签的value属性值相等。
回页首
logic:forward
我觉得将forwardredirect这两个动作放到一起对比着介绍更加有利于理解,基于此原因也就将logic:forwardlogic: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:redirect标签时我们可以向使用html:link一样构造baseurlquery参数。如果您感兴趣可以参考html:link标签。

阅读(824) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~