正文

logic标记库2007-03-13 10:41:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/hurongliang/23916.html

分享到:

逻辑比较运算 logic:equal/logic:notEqual logic:equal变量等于常量时结果为true,否则为false。 logic:notEqual变量不等于常量时结果为true logic:greaterEqual/logic:greaterThan logic:greaterEqual变量大于或等于常量时结果为true,否则为false。 logic:greaterThan变量大于常量时结果为true,否则为false。 logic:lessEqual/ logic:lessThan logic:lessEqual变量小于或等于常量时结果为true,否则为false。 logic:lessThan变量小于常量时结果为true,否则为false。 用法 所有比较运算标记都比较一个变量和一个常量的大小。如果结果为true,则执行标签主体的内容,否则不执行任何动作。 常量由value属性指定。变量可以有五种指定方法 1.  使用cookie属性指定变量为某个cookie的关键字的名称。 2.  使用header属性指定变量为HTTP头的某个关键字的名称。 3.  使用parameter属性指定变量为某个请求参数 4.  使用name属性指定变量为任何范围的某个已存在的变量。若指定了scope属性则变量限定在由scope指定的某个范围里 5.  使用name和property属性指定变量为任何范围的某个已存在的JavaBean的某个字段。若指定了scope属性则变量限定在由scope指定的某个范围里 注意 1.         如果变量不存在则比较结果为false,而不是抛出异常。 2.         如果两个字符串都可以转换成数字,就比较数字的大小,否则进行字符串的比较如:    <%    request.setAttribute("str","100");     %>     <logic:greaterThan name="str" value="90">greater</logic:greaterThan>结果为true。又如:    <%    request.setAttribute("str","100x");     %>     <logic:greaterThan name="str" value="90x">greater</logic:greaterThan>结果为false。 字符串匹配 logic:match / logic:notMatch logic:match判断变量是否包含指定常量,如果是则执行标记主体内容,否则不做任何动作。logic:notMatch与logic:match相反。 用法 该标记本质上提供了String对象的indexOf()、startsWith()和endsWith()方法。所有匹配区分大小写。 location属性:如果没有指定则执行indexOf()方法。如果指定为start则标记执行startsWith方法;如果指定为end则执行endsWith()方法。 常量由value属性指定。变量可以有五种指定方法 6.  使用cookie属性指定变量为某个cookie的关键字的名称。 7.  使用header属性指定变量为HTTP头的某个关键字的名称。 8.  使用parameter属性指定变量为某个请求参数 9.  使用name属性指定变量为任何范围的某个已存在的变量。若指定了scope属性则变量限定在由scope指定的某个范围里 使用name和property属性指定变量为任何范围的某个已存在的JavaBean的某个字段。若指定了scope属性则变量限定在由scope指定的某个范围里 判断指定内容是否存在 logic:empty/logic:notEmpty 判断指定变量是否为null或空字符串””。 如果指定的变量为空或不存在(即即变量没有定义或其值为null ),logic:empty返回true,否则logic:empty返回false。logic:notEmpty相反。 变量可以有2种指定方法 1.         使用name属性指定变量为任何范围的某个已存在的变量。若指定了scope属性则变量限定在由scope指定的某个范围里 2.         使用name和property属性指定变量为任何范围的某个已存在的JavaBean的某个字段。若指定了scope属性则变量限定在由scope指定的某个范围里 logic:present /logic:notPresent 判断角色、用户、cookie、header、parameter、JavaBean或某个范围的变量是否存在 如果指定变量不存在(即变量没有定义或其值为null),logic:present范围false,如果存在(即使其值是空字符串),则返回true。logic:notPresent 与logic:present相反 此标签除了进行标准的存在性检查外还提供了与J2EE安全系统交互的机制,以确定授权的用户是否具有指定的用户名 变量的指定有以下七种方法 1.  指定cookie属性 2.  指定header属性 3.  指定parameter属性 4.  指定name属性 5.  指定name和property属性 6.  指定user属性 判断当前通过授权的用户是否具有指定的用户名。可以设置多个用户名,用逗号分开如:user=”user1,user2”。 7.  指定role属性判断当前通过授权的用户是否具有指定的安全角色。可以设置多个安全叫色,用逗号分开如:user=”role1,role2”。 logic:present和empty的区别 变量为空是指变量的值为空字符串如String numberEmpty=””。 变量为null值变量的值未指定如String numbserNull = null。 变量未定义是指变量没有声明。 变量是否存在是指变量是否为null或变量有没有定义。 logic:present主要有两个区别 1.  logic:notEmpty当变量是存在且变量不为空时结果为true,logic:present当变量存在时为true 2.  logic:empty只能比较某个范围的变量,logic:除了检查某个范围的变量外,还能检查cookie,header,parameter的某个值是否存在,还能进行安全性的检查。 logic:messagesPresent/ logic:messagesNotPresent 判断request范围内是否存在指定的ActionMessages(或取子类ActionErrors)对象,以及在此对象中是否存在指定的信息。 logic:messagesPresent 判断指定的信息是否存在。logic:messagesNotPresent 与logic:messagesNotPresent相反。 name属性:指定request范围内检索ActionMessages对象的属性key,默认为Globals.ERROR_KEY。 message属性:如果为true则设定request范围内检索ActionMessages对象的属性key为Globals.MESSAGE_KEY。此时name属性无效。如果为false,则由name指定key。 property属性:如果指定则检查指定的message是否存在,否则检查ActiionMessages是否存在。 举例如下:     meessagesPresent用法<br>     <%       ActionErrors errors = new ActionErrors();       errors.add("errmsg",new ActionMessage("信息内容"));       request.setAttribute(Globals.ERROR_KEY,errors);      %> <logic:messagesPresent>存在 message</logic:messagesPresent> logic:messagesPresent标记的执行结果为 true。 循环遍历 logic:iterate 遍历集合中的元素。 要遍历的集合通过以下三种方式指定: 1.  collection属性指定一个运行时的表达式 2.  name 属性指定 3.  name和property属性指定 集合必须是以下集中类型: 1.  基本类型或引用类型的数组 2.  java.util.Collection类型,包括ArrayList和Vector 3.  Enumeration类型 4.  Iterator类型 Map类型,包括HashMap, Hashtable, 和 TreeMap.当遍历一个Map类型对象时,实际遍历的对象是Map.Entry,他包含两个属性key – 关键字value – 关键字对应的值所以当你遍历Map时需要同时使用name和property属性指定Map和某个属性(property=”key”或property=”value”) id属性保存遍历出的每个元素。 indexId保存此元素在集合中的位置。 length属性指定要遍历元素的最大个数。不指定则便利集合中的所有元素。 offset属性指定遍历的开始位置。默认从0开始。 scope属性指定集合所在范围。没有指定则依次从page,request,session,application范围搜索集合。 举例如下:    <%      HashMap course = new HashMap();      course.put("math",new Integer(120));      course.put("english",new Integer(122));      course.put("chinese",new Integer(100));      course.put("physics",new Integer(111));      course.put("chymistry",new Integer(129));      course.put("biology",new Integer(111));      course.put("politics",new Integer(98));      course.put("geography",new Integer(132));      course.put("history",new Integer(98));      pageContext.setAttribute("course",course);     %>     <bean:size id="course_length" name="course"/>     <logic:present name="course">       <logic:iterate id="c" name="course" length="<%=course_length.toString()%>" offset="3" indexId="course_id">         <bean:write name="c" property="key"/>:<bean:write name="c" property="value"/> - <bean:write name="course_id"/><br>       </logic:iterate>     </logic:present>结果显示如下:english:122 - 3physics:111 - 4history:98 - 5geography:132 - 6math:120 - 7politics:98 – 8 转发或重定向 logic:forward 相当于在struts内部执行PageContext.forward() or HttpServletResponse.sendRedirect()。 该标记根据name属性在Struts配置文件中查找一个forward,再根据该forward的定义决定转至特定的URL。如果forward的redirect属性设置为”true”则标记将重定向,否则直接转至。 redirect向浏览器发送一个响应,提示浏览器加载另一个页面。forward直接转至要加载的页面 forward只能转到相同服务器上的URL,redirect可以转到任何的URL。 logic:redirect 相当于在struts内部执行HttpServletResponse.sendRedirect()。浏览器不显示本页面的URL而是重定向后的URL。 有以下三种方法指定URL: l  forward属性 l  page属性 l  href属性 (以上三种方法的用法跟link:rewrite方法相同)。 l  action属性。指向一个action。 指定参数的方法有以下两种: 指定一个参数。参数名由paramId指定,参数值由一个JSP变量指定,这个变量的值就作为paramId对应的参数的值。指定JSP变量有两种方法:一种是由paramName属性指定。如:    <%      pageContext.setAttribute("name","rolia");     %>     <logic:redirect forward="showparams"                      paramId="name"                      paramName="name"                      scope="page"/>一种是由paramName属性指定一个JavaBean,paramProperty属性指定这个bean的某个属性,这个属性的值作为参数值。 指定多个参数。多个参数保存在一个Map对象中,它里面的每个map.entry对象作为一个参数名/值对传递。指定Map对象有两种方法:一种是由name属性指定。如:    <%      HashMap course = new HashMap();      course.put("math",new Integer(120));      course.put("english",new Integer(122));      course.put("chinese",new Integer(100));      course.put("physics",new Integer(111));      course.put("chymistry",new Integer(129));      course.put("biology",new Integer(111));      course.put("politics",new Integer(98));      course.put("geography",new Integer(132));      course.put("history",new Integer(98));      pageContext.setAttribute("course",course);     %>     <logic:redirect forward="showparams"                      name="course"/>一种是由name属性指定一个JavaBean,property属性指定JavaBean的某个属性,这个属性为一个Map对象。 小结 l  逻辑标签判断条件是否为true,是则执行标签主体的内容。 l  多数标签可以设置name属性,和property属性,用法一样。scope属性指定范围。如果没有指定,依次在page,request,session和application范围里查找。 l  nest标记库

阅读(3829) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册