ONGL 表达式和Struts2标签的运用
1、 struts2的 ONGL 表达式只能使用在 struts2 的标签中
2、 Struts2的 ONGL 表达式支持 EL 表达式
3、 示例参考
3.1 <s:set>标签
01.set list
<s:set var/name="list" value="{'a','b','c','d'}" scope="request"></s:set>list被默认存放于request域中
02. set map
<s:set name="myMap" value="#{1:'老李',2:'老张',3:'老赵',4:'老王'}"></s:set>
<s:set name="test" value=" '测试' " />
<s:iterator value="page.result" status="s" var="u"> <tr> <td nowrap="nowrap">${requestScope.u.dwmc} </td> <td nowrap="nowrap"><s:property value="#request.u.dwjc"/></td> <td nowrap="nowrap"><a href="admin/Unit/Unit_update.action?dwid=<s:property value="%{page.curPage+1}" />">编辑</a></td> <td nowrap="nowrap"> <a href="admin/Unit_delete.action?dwid=${u.dwid}">删除</a></td> <td nowrap="nowrap"> </td> </tr> </s:iterator >
3.2 <s:iterator>
简述:value:可选属性,指定被迭代的集合,如果没有设置该属性,则使用ValueStack栈顶的集合。
id:可选属性,指定集合里元素的id。
status:可选属性,该属性指定迭代时的IteratorStatus实例。该实例包含如下几个方法:
int getCount(),返回当前迭代了几个元素。
int getIndex(),返回当前迭代元素的索引。
boolean isEven(),返回当前被迭代元素的索引是否是偶数
boolean isOdd(),返回当前被迭代元素的索引是否是奇数
boolean isFirst(),返回当前被迭代元素是否是第一个元素。
boolean isLast(),返回当前被迭代元素是否是最后一个元素。
var:从集合中迭代出的元素
01、
<s:iterator value="page.result" status="s" var="u"> <tr> <td nowrap="nowrap">${requestScope.u.dwmc} </td> <td nowrap="nowrap"><s:property value="#request.u.dwjc"/></td> <td nowrap="nowrap"><a href="admin/Unit/Unit_update.action?dwid=<s:property value="%{page.curPage+1}" />">编辑</a></td> <td nowrap="nowrap"> <a href="admin/Unit_delete.action?dwid=${u.dwid}">删除</a></td> <td nowrap="nowrap"> </td> </tr> </s:iterator >
在<s:iterator> 中, var 被放在了 request 域中,两种访问形势
${requestScope.u.dwmc} #request.u.dwjc
02、迭代list
<!-- 设置set集合 value--> <!-- status 可选属性,该属性指定迭代时的IteratorStatus实例 --> <!-- value="#attr.list" list存放到了request中 可以value="#request.list" statu.odd返回当前被迭代元素的索引是否是奇数 --> <s:set name="list" value="{'a','b','c','d'}"></s:set> <s:iterator var="ent" value="#request.list" status="statu"> <s:if test="%{#statu.odd}"> <font color="red"><s:property value="#ent" /> </font> </s:if> <s:else> <s:property value="#ent" /> </s:else> </s:iterator>
<!-- map集合的特点: 语法格式:# {key:value,key1:value1,key2:value2,.....} 以上的语法中就直接生成了一个Map类型的集合,该Map对象中的每个key-value对象之间用英文的冒号隔开, 多个元素之间用逗号分隔。 --> <s:set var="map" value="#{'1':'laowang','2':'老王','3':'猩猩'}"></s:set> <s:iterator value="#map"> <s:property value="key" />:::<s:property value="value" /> </s:iterator>
<s:set name="age" value="21" /> <s:if test="#age==23"> 23 </s:if> <s:elseif test="#age==21"> 21 </s:elseif> <s:else> 都不等 </s:else>
<h1>form表单</h1> <s:form action="test" namespace="/tag"> <s:textfield label="用户名" name="uname" tooltip="你的名字" javascriptTooltip="false"></s:textfield> <s:textarea name="rmake" cols="40" rows="20" tooltipDelay="300" tooltip="hi" label="备注" javascriptTooltip="true"></s:textarea> <s:password label="密码" name="upass"></s:password> <s:file name="file" label="上传文件"></s:file> <s:hidden name="id" value="1"></s:hidden> <!-- <select name="edu"> <option value="listKey">listValue</option> --> <s:select list="#{'1':'博士','2':'硕士'}" name="edu" label="学历" listKey="key" listValue="value"></s:select> <s:select list="{'java','.net'}" value="java"></s:select><!-- value是选中的 --> <!-- 必须有name --> <s:checkbox label="爱好 " fieldValue="true" name="checkboxFiled1"></s:checkbox> <!-- 多个checkbox --> <s:checkboxlist list="{'java','css','html','struts2'}" label="喜欢的编程语言" name="box" value="{'css','struts2'}"></s:checkboxlist> <!-- map集合前要加# --> <s:checkboxlist list="#{1:'java',2:'css',3:'html',4:'struts2',5:'spring'}" label="喜欢的编程语言" name="boxs" value="{1,2}"></s:checkboxlist> <!-- listKey listValue <input type="text" name="boxs" value="listKey">显示值listValue --> <!-- radio --> <% //从服务器传过来值 pageContext.setAttribute("sex","男",PageContext.REQUEST_SCOPE); pageContext.setAttribute("sex1","男",PageContext.REQUEST_SCOPE); %> <s:radio list="{'男','女'}" name="sex" value="#request.sex"></s:radio> <s:radio list="#{1:'男',2:'女'}" name="sex1" listKey="key" listValue="value" value="#request.sex1"></s:radio> <!-- 防止表单提交的方式 --> <s:token></s:token> <s:submit value="提交"></s:submit> </s:form>
3.5 时间格式化标签<s:date name=" " format="yyyy-MM-dd" />
<!--出生年月格式化1989-07-08--> <s:date name="user.csny" format="yyyy-MM-dd"/>
3.6在iterator中嵌套struts标签 v.bt
<s:iterator value="#request.otherlist" status="s" var="v"> <tr onclick="" title="点击查看详细视频"> <td align="center" class="xxtd"> <s:if test="bt.length()>19"> <s:property value="bt.substring(0,19)"/>... </s:if> <s:else> <s:property value="bt" /> </s:else> </td> </tr> </s:iterator>
长度:<s:property value="rb.rbnr.length()" /> 截取:<s:property value="rb.rbnr.substring(0,6)" />4.5 时间处理(接收变量要为时间类型)
时间差:<s:property value="#request.time-rb.tjsj.getTime()" /> 日报时间:<s:property value="rb.tjsj.getTime()" /> 时间戳<s:property value="#request.time" /> <s:if test="rb.rblx == 0 and #request.time-rb.tjsj.getTime()"></s:if>
00、struts 三目运算符 <div name="1" class="daan1" id="${iterm.myStore.id}" style="${statu.index==0?'margin:0; border:0;':'' }">
相关推荐
2. **JSP标签库**:Struts提供了一系列的JSP标签,如`s:textfield`、`s:textarea`等,这些标签内部使用ONGL表达式处理数据。 3. **国际化**:在资源文件中定义国际化字符串,ONGL表达式可以引用这些字符串,实现...
ONGL表达式,不解释,需要的就下吧,很全面的一份资料,看了就知道了
通过上述介绍可以看出,OGNL在Struts2框架中扮演着重要的角色,不仅提供了强大的数据访问能力,而且还具备灵活多变的表达式构造方式,极大地提升了开发效率和代码的可维护性。对于深入理解和掌握Struts2框架而言,...
这个压缩包包含了Struts2中的ONGL包源码,对于理解Struts2的工作原理和深入学习OGNL的使用非常有帮助。 OGNL是Object-Graph Navigation Language的缩写,它的主要功能是在对象图中导航并执行操作。在Struts2中,...
OGNL(Object-Graph Navigation Language,对象图导航语言)是Struts 2框架的默认表达式语言,它极大地增强了Struts 2的数据访问能力和代码简洁性。OGNL不仅能够通过简单的表达式访问Java对象的属性,而且还可以用于...
Java Struts2 OGNL(Object-Graph Navigation Language)标签是用于在JSP页面中动态地访问和操作Java对象的强大工具。以下是对这些知识点的详细解释: 1. **对象树的访问**: OGNL允许开发者通过点号(`.`)来遍历...
在压缩包中的"example"文件可能包含了一个或多个使用Struts2标签的实际示例,可以参考这些示例来理解和学习Struts2标签的用法。通过实践,你会更好地掌握这些标签的功能和用法,从而在开发过程中更加得心应手。
Struts2 标签库详解 Struts2 提供了一个强大的标签库,用于简化 Web 应用程序的开发过程。这些标签可以分为两类:通用标签和 UI 标签。下面,我们将详细介绍 Struts2 标签库的使用。 4.1 通用标签 通用标签用来...
在IT行业中,EL(Expression Language)和OGNL(Object-Graph Navigation Language)是两种常见的表达式语言,它们在Web开发中扮演着重要角色,尤其是在Java EE和Spring框架中。这两种语言都用于简化数据绑定和...
Struts2 OGNL(Object-Graph ...通过理解并熟练运用OGNL表达式和相关标签,开发者可以更高效地构建Struts2应用程序,实现数据的灵活绑定和交互。同时,了解其潜在的安全风险并采取相应措施是保障应用程序安全的关键。
INTERNET基础应用教案.doc
在实际使用中,Struts2标签的灵活性和便利性体现在数据绑定上,它可以直接与Action类的属性进行交互,无需繁琐的EL表达式。例如,`<s:textfield name="username">`会自动找到对应的Action中的`username`属性,并将...
- **OGNL表达式**:在Struts2标签中广泛使用,可以用来访问Action的属性,如`s:property value="%{user.name}"`。 - **标签组合使用**:通过组合多个标签,可以实现复杂的业务逻辑和界面渲染。 6. **最佳实践** ...
OGNL(Object Graph Navigation Language)是一种强大的表达式语言,广泛应用于Struts 2框架中,用以在视图层和模型层之间进行数据传递。相比EL(Expression Language)表达式,OGNL提供更丰富的功能,如对象方法...
Struts2是一个强大的MVC框架,它极大...通过熟练掌握Struts2标签的使用和EL表达式,可以显著提升开发效率,同时使Web应用的视图层更加整洁和易于维护。不断实践和理解这些知识点,将成为开发高质量Java Web应用的基础。
2、支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路)]@[方法名 | 值名],例如: @java.lang.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME; 3、支持赋值操作和表达式串联,...
参考文档是开发者理解和使用Struts2标签的关键资源,它详细阐述了每个标签的功能、属性、用法及示例,有助于快速学习和掌握Struts2的视图层开发。 通过深入学习和实践Struts2的标签API,开发者可以有效地提升Web...
Struts2是一个流行的Java web开发框架,其核心特性之一就是使用OGNL(Object-Graph Navigation Language)作为表达式语言,并提供了丰富的标签库来简化视图层的开发。本篇文章将详细探讨Struts2中的OGNL表达式语言...
Struts2框架的标签库基于OGNL(Object-Graph Navigation Language)表达式语言,使得在JSP页面中处理业务数据和控制流程变得更加方便。下面将详细介绍几个常用且相对复杂的Struts2标签。 1. `s:textfield`: 这个标签...