- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
logic标签库.
C.4 Logic标签库
Logic标签库提供条件处理、循环以及流控制的标签。
条件处理:equal/notEqual,empty/notEmpty,greaterEqual/lessEqual/greaterThan/ lessThan,match/notMatch,messagesPresent/messagesNotPresent以及present/ notPresent。
循环:iterate标签。
流控制:forward和redirect标签。
所有这些标签,除了涉及到流控制的那两个,都有JSTL对应物,所以应该尽可能地使用JSTL版本。
C.4.1 公共属性集Logic标签库,有两个公共的属性集。第一个,我们称做基础对象属性集(base- attrs),列于表C-11中,以及属于对应的标签所适用于的JavaBean对象。
表C-11 base-attrs属性集
属性名称 用 法 name 基础对象的名称。如果这个属性被忽略,那么隐含的基础对象(如果有)会被使用。如果该标签被包围在一个html:form中,隐含的基础对象将是与该表单关联的表单bean property 基础对象上的属性,其值被用于标签的功能。例如标签是一个比较标签,那么基础对象上的属性的值便被用于比较。这假定基础对象上有一个对应的getXXX()函数 scope 表示一个作用域,将在其上根据给定的name属性查找对象。如果scope没有被声明,那么要根据name 属性指定的名称查找所有作用域。有效的作用域是page、request、session和application 一些标签允许使用来自其他来源的值(也就是说,除了基础对象上的属性之外)来完成它们的工作。这些扩展Property属性(expropattrs)C-12中。
表C-12 exprop-attrs属性集
属性名称 用 法 cookie 要使用的cookie的名称 header 要使用的HTTP请求头变量的名称。该名称的匹配是忽略大小写的 parameter 要使用的URL请求参数的名称。如果不只一个,将使用第一个 C.4.2 选择器属性
Logic库中的许多标签都使用选择器属性。这些属性被用于选择对象或属性来执行该标签的功能。选择器属性是cooki、header、name/property和parameter。
Struts将按这个次序询问这些属性。例如,如果指定了cookie和parameter,只有cookie属性被用于执行该标签的任务。
注意,name/property属性在这里被视做一对。也就是说如果指定了name,可以同时可选地指定property属性。如果它们的作用是选择器属性的话,不能仅仅单独指定property,必须同时指定name。可以参考每个标签的说明文档来区分是否是这种情况。
C.4.3 针对Logic标签库的Struts-EL标签
EL使能的版本:forward、iterate、match/notMatch、messages- Present/messagesNotPresent、present/notPresent以及redirect。其他标签具有更简单的JSTL对应物。
注意 EL使能的标签是指那些允许使用EL表达式的标签。参看第10章的例子。
C.4.4 empty/notEmpty
empty将在指定的属性或基础对象为null的时候,即一个零长度字符串,或一个空的集合或Map的时候,有条件地执行它的标签体。如果property属性没有被指定,测试将基于name属性给定的基础对象进行。
notEmpty是empty的逆命题。
1. 使用限制
name属性必须指定,即使嵌套在一个html:form内部。
2. 属性
只有base-attrs属性集适用。
3. 示例
以下例子展示了如果MyCollection是空的,将使用logic:empty标签来有条件地处理嵌套的bean:write标签。
下一个例子说明了property属性的使用:
bean:write只有当getEmail()函数返回null,或一个零长度字符串时才会被执行。还可以使用作用域变量来指定在其中查找bean的作用域:
在前面的例子中,如果MyBean可以在请求作用域中找到,bean:write将在基础对象之上被调用。
4. 对应物
可以轻易地使用JSTL的c:if或c:choose... c:when来创建empty和notEmpty的对应物。例如使用c:if,前面的例子将成为:
和
必须使用JSTL隐含的对象(requestScopesessionScope等):
C.4.5 equal/no
文档评论(0)