<body>

    <s:set name="age" value="61" />
<!-- if elseif else 參数test:决定标志里的内容是否显示的表达式,类型boolean 注:else标志没有这个參数 -->
<h3>if语句</h3>
<s:if test="{age>60}">
老年人
</s:if>
<s:elseif test="{age>35}">
中年人
</s:elseif>
<s:elseif test="{age>15}">
青年人
</s:elseif>
<s:else>
少年
</s:else>
<br />
<s:iterator value="{'11','21','31','41','51'}" id='number' var="number2">
<s:property value="#number"/>A
<s:property value="#number2"/>B
</s:iterator>
<br />
<!--
status:迭代元素的索引。能够指定first、count、even、odd、last、index属性
begin:从指定的索引处開始
end:到指定的索引处结束
step:一次遍历几次 -->
<h3>iterator语句</h3>
<s:iterator value="{'a','b','c','d'}" id="char" status="st" begin="1" end="3" step="2" >
<s:if test="#st.first">第一个元素:<s:property value="#char" /></s:if>
<s:if test="#st.count">当前迭代了<s:property value="#st.count" />个元素</s:if>
<s:if test="#st.even">索引为奇数的是:<s:property value="#char" /></s:if>
<s:if test="#st.odd">索引为偶数的是:<s:property value="#char"/></s:if>
<s:if test="#st.last">最后一个元素:<s:property value="#char" /></s:if>
当前索引:<s:property value="#st.index" />
当前元素值:<c:out value="${char}"></c:out>
<br />
</s:iterator>
<br />
<h3>map语句</h3>
<s:set value="#{'1':'a','2':'b'}" name="map" />
map中键为1的值为:<s:property value="#map['1']" />
<br />
map中键为2的值为:<s:property value="#map['2']" />
<br />
<s:iterator value="#map" var="map2">
key:<s:property value="key" />
value:<s:property value="value" />
</s:iterator>
<br />
<%
request.setAttribute("req","request scope") ;
request.getSession().setAttribute("sess","session scope") ;
request.getSession().getServletContext().setAttribute("app","application scope") ;
%>
<h3>取request、session、application值</h3>
request的值:<s:property value="%{#request.req}" /><br />
session的值:<s:property value="#session.sess" /><br />
application的值:<s:property value="#application.app" /><br />
<c:out value="${requestScope.req}"></c:out> <h3>%符号的使用方法</h3>
<s:set name="foobar" value="#{'foo1':'bar1', 'foo2':'bar2'}" /> <p>The value of key "foo1" is <s:property value="#foobar['foo1']" /></p> <p>不使用%:<s:url value="#foobar['foo1']" /></p> <p>使用%:<s:url value="%{#foobar['foo1']}" /></p>
<h3>逻辑推断</h3>
<br>
<s:if test="'aa' in {'aaa','bbb'}">
aa 在 集合{'aaa','bbb'}中。
</s:if>
<s:else>
aa 不在 集合{'aaa','bbb'}中;
</s:else>
<br />
<s:set name="list" value="{'eeeee','ddddd','ccccc','bbbbb','request scope'}"></s:set>
<s:if test="#request.req not in #list">
不 在 集合list中。
</s:if>
<s:else>
在 集合list中;
</s:else>
<br />
<hr>
<h3>返回集合中满足条件的值,以下输出3 4 5</h3>
<s:set name="list1" value="{1,2,3,4,5}" />
<s:iterator value="#list1.{? #this>2}" var="o">
<s:property />
</s:iterator>
<br />
<hr />
<% request.setAttribute("aa",0); %>
<s:if test="#request.aa>=0 && #request.aa<=4">
在0-4之间。
</s:if>
<s:elseif test="#request.aa>=4 && #request.aa<=8">
在4-8之间;
</s:elseif>
<s:else>
大于8;
</s:else>
<br>
<hr>
<!--输出以下结果
/test/aa/bb/testAction.action?aa=sss&id=100
value以字符处理: #myurl
value明白指定以ognl表达式处理: http://www.baidu.com
-->
<% request.setAttribute("aa","sss"); %>
<s:url action="testAction" namespace="/aa/bb">
<s:param name="aa" value="#request.aa"></s:param>
<s:param name="id">100</s:param>
</s:url>
<br/>
<s:set name="myurl" value="'http://www.baidu.com'"></s:set>
value以字符处理: <s:url value="#myurl"></s:url><br>
value明白指定以ognl表达式处理: <s:url value="%{#myurl}"></s:url>
<br>
<hr>
<s:checkboxlist name="checkbox1" list="{'上网','看书','爬山','游泳','唱歌'}" value="{'上网','看书'}" ></s:checkboxlist><br />
<s:checkboxlist name="checkbox2" list="#{1:'上网',2:'看书',3:'爬山',4:'游泳',5:'唱歌'}" listKey="key" listValue="value" value="{1,2,5}" ></s:checkboxlist>
<s:debug></s:debug> </body>
<span style="font-size:32px;">输出结果为:</span>
<span style="font-size:10px; font-family: Arial, Helvetica, sans-serif;">if语句</span><span style="font-size:10px;"></span><pre name="code" class="html">
老年人
A 11B A 21B A 31B A 41B A 51B
iterator语句 第一个元素:b 当前迭代了1个元素 索引为偶数的是:b 当前索引:0 当前元素值:b
当前迭代了2个元素 索引为奇数的是:d 最后一个元素:d 当前索引:1 当前元素值:d map语句 map中键为1的值为:a
map中键为2的值为:b
key:1 value:a key:2 value:b
取request、session、application值 request的值:request scope
session的值:session scope
application的值:application scope
request scope
%符号的使用方法 The value of key "foo1" is bar1 不使用%:#foobar['foo1'] 使用%:bar1 逻辑推断 aa 不在 集合{'aaa','bbb'}中。
在 集合list中;
返回集合中满足条件的值,以下输出3 4 5 3 4 5
在0-4之间;
/test/aa/bb/testAction.action?aa=sss&id=100
value以字符处理: #myurl
value明白指定以ognl表达式处理: http://www.baidu.com
上网 看书 爬山 游泳 唱歌
上网 看书 爬山 游泳 唱歌
[Debug]

struts2中ognl标签具体解释的更多相关文章

  1. Struts2的OGNL标签详解

    一.Struts2可以将所有标签分成3类: UI标签:主要用于生成HTML元素的标签. 非UI标签:主要用于数据库访问,逻辑控制等标签. Ajax标签:用于Ajax支持的标签. 对于UI标签,则有可以 ...

  2. 解决struts2中UI标签出现的问题: The Struts dispatcher cannot be found

    解决struts2中UI标签出现的问题: The Struts dispatcher cannot be found 异常信息: The Struts dispatcher cannot be fou ...

  3. Struts2中OGNL表达式的用法

    今天分享的是Struts2框架中的一种ognl表达式语言,主要分两个目标去学习    1.理解struts2传值的优先级    2.ognl与el的区别 一:ognl表达式语言简介 OGNL的全称是O ...

  4. Struts2中OGNL

    什么是OGNL OGNL:Object Graph Navigation Language  对象导航图语言 开源项目,取代页面中Java脚本,简化数据访问 和EL同属于表达式语言,但功能更为强大 让 ...

  5. Struts2(十)OGNL标签二与Struts2标签

    一.Struts2标签的优势 标签库简化了用户对标签的使用 结合OGNL使用,对于集合.对象的访问功能非常强大 提供可扩展的主题.模板支持.极大简化了视图页面的编写 不依赖任何表现层技术 Struts ...

  6. [JavaEE] 深入理解Struts2的ognl标签

    OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够 ...

  7. struts2中的标签“# ”,“%{ }”,“%{# }”

    理解值栈(ValueStack)与上下文(StackContext):            Struts2中有值堆栈和堆栈上下文的概念,你用 <s:debug />可以看出. 值栈中的对 ...

  8. Struts2(十一)OGNL标签三与Struts2标签

    一.UI标签 二.简单例子 <h1>添加信息</h1> <!--通过指定theme的属性改变主题 --> <s:form action="" ...

  9. Struts2(九)OGNL标签一与Struts2标签

    一.什么是OGNL  Object Graph Navigation Language对象图导航语言. 是Struts2默认的表达式语言,开源,功能更强大.和EL表达式有点相似 存取对象的属性,调用对 ...

随机推荐

  1. 【项目部署】部署项目以war包部署和解开以目录部署的区别

    我们都知道最简单的部署web项目的方式是打成war包直接仍在tomcat的webapps目录下,我上个项目也确实是这样做的,可是这给我们后期的维护带来了极大的不便,下面就简单研究一下以war包部署和解 ...

  2. CodeForces Contest #1110: Global Round 1

    比赛传送门:CF #1110. 比赛记录:点我. 涨了挺多分,希望下次还能涨. [A]Parity 题意简述: 问 \(k\) 位 \(b\) 进制数 \(\overline{a_1a_2\cdots ...

  3. 如果django里的视图是类(CBV),应该如何写Url的测试用例?

    晚上回家测试了很多方式,都不行. 网上搜索找不到答案, 最后还是官方文档最抵用呢. https://docs.djangoproject.com/en/2.1/topics/testing/tools ...

  4. eaccelerator 完全手册:配置、控制、API接口

    安装官方有很详细的文档 转自 http://www.enjoyphp.com/2010/eaccelerator-manual/ 配置选项 eaccelerator.shm_size指定 eAccel ...

  5. PyTorch-Kaldi 语音识别工具包

    翻译:  https://arxiv.org/pdf/1811.07453.pdf ABSTRACT 开源软件的可用性在语音识别和深度学习的普及中发挥了重要作用.例如,Kaldi 现在是用于开发最先进 ...

  6. linux上jenkins连接windows并执行exe文件

    1.如果要通过ssh的方式来连接windows的话,首先需要在windows上安装freesshd来配置启动.配置ssh(win10上自带了openssh可以进行安装使用,但我机器装不上) 1.1.下 ...

  7. 7-9The Morning after Halloween uva1601

    这题可以用普通bfs来做  也可以用双向bfs来做(先欠着) 有点类似专题训练的一题   不过那题是找钥匙开门   不过都用了状态压缩 题意:  n,m(<=16) 的网络上有t(<=3) ...

  8. 【Java】 大话数据结构(5) 线性表之双向链表

    本文根据<大话数据结构>一书,实现了Java版的双向链表. 在每个数据结点中都有两个指针,分别指向直接后继和直接前驱,这样的链表称为双向链表. 双向链表的结构如图所示: 查找元素可以根据元 ...

  9. 深入理解Git - 一切皆commit

    在对 git 有了基本理解和知道常规操作之后,如何对 git 的使用有进一步的理解? 一切皆 commit 或许是个不错的理解思路. 本文将从『一切皆 commit 』的角度,通过 git 中常见的名 ...

  10. JavaWeb中Tomcat与Eclipse的集成—步骤详解

    前面会简单介绍,下翻Tomcat与Eclipse的集成 一.先介绍一下应用程序的结构: 1.到目前为止应用程序物理结构有两种: C/S——Client / server:这种结构的应用,客户端与服务端 ...