struts2中ognl标签详解

简介:
[html]  view plain  copy
 print ?
  1. <body>  
  2.    
  3.    <s:set name="age" value="61" />  
  4.    <!-- if elseif else 参数test:决定标志里的内容是否显示的表达式,类型boolean 注:else标志没有这个参数 -->  
  5.    <h3>if语句</h3>  
  6.    <s:if test="{age>60}">  
  7.     老年人  
  8.    </s:if>  
  9.    <s:elseif test="{age>35}">  
  10.     中年人  
  11.    </s:elseif>  
  12.    <s:elseif test="{age>15}">  
  13.     青年人  
  14.    </s:elseif>  
  15.    <s:else>  
  16.     少年  
  17.    </s:else>  
  18.    <br />  
  19.    <s:iterator value="{'11','21','31','41','51'}"  id='number' var="number2">  
  20.     <s:property value="#number"/>A  
  21.     <s:property value="#number2"/>B  
  22.    </s:iterator>  
  23.    <br />  
  24.    <!--   
  25.     status:迭代元素的索引,可以指定first、count、even、odd、last、index属性  
  26.     begin:从指定的索引处开始  
  27.     end:到指定的索引处结束  
  28.     step:一次遍历几次  
  29.      
  30.     -->  
  31.     <h3>iterator语句</h3>  
  32.    <s:iterator value="{'a','b','c','d'}" id="char" status="st" begin="1" end="3" step="2" >  
  33.     <s:if test="#st.first">第一个元素:<s:property value="#char" /></s:if>  
  34.     <s:if test="#st.count">当前迭代了<s:property value="#st.count" />个元素</s:if>  
  35.     <s:if test="#st.even">索引为奇数的是:<s:property value="#char" /></s:if>  
  36.     <s:if test="#st.odd">索引为偶数的是:<s:property value="#char"/></s:if>  
  37.     <s:if test="#st.last">最后一个元素:<s:property value="#char" /></s:if>  
  38.     当前索引:<s:property value="#st.index" />  
  39.     当前元素值:<c:out value="${char}"></c:out>  
  40.     <br />  
  41.    </s:iterator>  
  42.    <br />  
  43.    <h3>map语句</h3>  
  44.    <s:set value="#{'1':'a','2':'b'}" name="map" />  
  45. map中键为1的值为:<s:property value="#map['1']" />  
  46. <br />  
  47. map中键为2的值为:<s:property value="#map['2']" />  
  48. <br />  
  49.    <s:iterator value="#map" var="map2">  
  50.     key:<s:property value="key" />  
  51.     value:<s:property value="value" />  
  52.    </s:iterator>  
  53.    <br />  
  54.    <%  
  55.     request.setAttribute("req","request scope") ;  
  56.     request.getSession().setAttribute("sess","session scope") ;  
  57.     request.getSession().getServletContext().setAttribute("app","application scope") ;  
  58.    %>  
  59.    <h3>取request、session、application值</h3>  
  60.    request的值:<s:property value="%{#request.req}" /><br />  
  61.    session的值:<s:property value="#session.sess" /><br />  
  62.    application的值:<s:property value="#application.app" /><br />  
  63.    <c:out value="${requestScope.req}"></c:out>  
  64.      
  65.    <h3>%符号的用法</h3>  
  66.     <s:set name="foobar" value="#{'foo1':'bar1', 'foo2':'bar2'}" />      
  67.      
  68.    <p>The value of key "foo1" is <s:property value="#foobar['foo1']" /></p>      
  69.      
  70.    <p>不使用%:<s:url value="#foobar['foo1']" /></p>      
  71.      
  72.    <p>使用%:<s:url value="%{#foobar['foo1']}" /></p>      
  73.    <h3>逻辑判断</h3>  
  74.    <br>      
  75.        <s:if test="'aa' in {'aaa','bbb'}">      
  76.            aa 在 集合{'aaa','bbb'}中;      
  77.        </s:if>      
  78.        <s:else>      
  79.            aa 不在 集合{'aaa','bbb'}中;      
  80.        </s:else>      
  81.        <br />      
  82.         <s:set name="list" value="{'eeeee','ddddd','ccccc','bbbbb','request scope'}"></s:set>   
  83.        <s:if test="#request.req not in #list">      
  84.                    不 在 集合list中;      
  85.        </s:if>      
  86.        <s:else>      
  87.                在 集合list中;      
  88.        </s:else>      
  89.        <br />      
  90.        <hr>  
  91.        <h3>返回集合中满足条件的值,下面输出3 4 5</h3>  
  92.        <s:set name="list1" value="{1,2,3,4,5}" />  
  93.        <s:iterator value="#list1.{?#this>2}" var="o">  
  94.         <s:property />  
  95.        </s:iterator>  
  96.        <br />  
  97.        <hr />  
  98.         <% request.setAttribute("aa",0); %>      
  99.        <s:if test="#request.aa>=0 && #request.aa<=4">      
  100.                    在0-4之间;      
  101.        </s:if>      
  102.        <s:elseif test="#request.aa>=4 && #request.aa<=8">      
  103.                  在4-8之间;      
  104.        </s:elseif>      
  105.        <s:else>      
  106.                 大于8;      
  107.        </s:else>      
  108.        <br>      
  109.        <hr>      
  110.        <!--输出以下结果   
  111.         /test/aa/bb/testAction.action?aa=sss&id=100   
  112.            value以字符处理: #myurl  
  113.            value明确指定以ognl表达式处理: http://www.baidu.com      
  114.         -->  
  115.        <% request.setAttribute("aa","sss"); %>      
  116.        <s:url action="testAction" namespace="/aa/bb">      
  117.            <s:param name="aa" value="#request.aa"></s:param>      
  118.            <s:param name="id">100</s:param>      
  119.        </s:url>      
  120.        <br/>      
  121.        <s:set name="myurl" value="'http://www.baidu.com'"></s:set>      
  122.        value以字符处理:   <s:url value="#myurl"></s:url><br>      
  123.        value明确指定以ognl表达式处理:    <s:url value="%{#myurl}"></s:url>      
  124.        <br>      
  125.        <hr>      
  126.         <s:checkboxlist name="checkbox1" list="{'上网','看书','爬山','游泳','唱歌'}" value="{'上网','看书'}" ></s:checkboxlist><br />  
  127.         <s:checkboxlist name="checkbox2" list="#{1:'上网',2:'看书',3:'爬山',4:'游泳',5:'唱歌'}" listKey="key" listValue="value" value="{1,2,5}" ></s:checkboxlist>    
  128.    <s:debug></s:debug>  
  129.      
  130.  </body>  
[html]  view plain  copy
 print ?
  1. <span style="font-size:32px;">输出结果为:</span>  
[html]  view plain  copy
 print ?
  1. <span style="font-size:10px; font-family: Arial, Helvetica, sans-serif;">if语句</span><span style="font-size:10px;"></span><pre name="code" class="html">  
  2. 老年人   
  3. A 11B A 21B A 31B A 41B A 51B   
  4. iterator语句  
  5.   
  6. 第一个元素:b 当前迭代了1个元素 索引为偶数的是:b 当前索引:0 当前元素值:b   
  7. 当前迭代了2个元素 索引为奇数的是:d 最后一个元素:d 当前索引:1 当前元素值:d   
  8.   
  9. map语句  
  10.   
  11. map中键为1的值为:a   
  12. map中键为2的值为:b   
  13. key:1 value:a key:2 value:b   
  14. 取request、session、application值  
  15.   
  16. request的值:request scope  
  17. session的值:session scope  
  18. application的值:application scope  
  19. request scope  
  20. %符号的用法  
  21.   
  22. The value of key "foo1" is bar1  
  23.   
  24. 不使用%:#foobar['foo1']  
  25.   
  26. 使用%:bar1  
  27.   
  28. 逻辑判断  
  29.   
  30.   
  31. aa 不在 集合{'aaa','bbb'}中;   
  32. 在 集合list中;   
  33. 返回集合中满足条件的值,下面输出3 4 5  
  34.   
  35. 3 4 5   
  36. 在0-4之间;   
  37. /test/aa/bb/testAction.action?aa=sss&id=100   
  38. value以字符处理: #myurl  
  39. value明确指定以ognl表达式处理: http://www.baidu.com   
  40.  上网  看书  爬山  游泳  唱歌   
  41.  上网  看书  爬山  游泳  唱歌  
  42. [Debug]  
目录
相关文章
|
安全 Windows
Win10/Win11如何获取最高管理员权限
Win10/Win11如何获取最高管理员权限
3357 0
|
索引 Python
%g是什么
`%g` 是 Python 字符串格式化中的一种格式说明符,用于表示浮点数或整数,能自动选择最合适的表示法。当数值为整数时,它显示整数;当数值较大或含小数时,它选择科学记数法或小数点记数法,并去掉无用的零。例如:
1419 1
|
12月前
|
分布式计算 DataWorks 算法
关于单次亿级图片素材调度、处理及使用的工程实践总结
作者有幸参与设计和开发了涉及数十亿量级的图片素材调度、处理和索引使用的平台-产业AI素材库,在平台的建设落地过程中,踩了许多坑,也有了一些工程落地上的实践总结,希望分享给大家。
193 10
|
数据采集 数据可视化 算法
基于Python flask的boss直聘数据分析与可视化系统案例,能预测boss直聘某个岗位某个城市的薪资
本文介绍了一个基于Python Flask框架的Boss直聘数据分析与可视化系统,系统使用selenium爬虫、MySQL和csv进行数据存储,通过Pandas和Numpy进行数据处理分析,并采用模糊匹配算法进行薪资预测。
434 0
基于Python flask的boss直聘数据分析与可视化系统案例,能预测boss直聘某个岗位某个城市的薪资
|
9月前
|
机器学习/深度学习 存储 人工智能
淘天算法工程师玩转《黑神话》,多模态大模型如何成为天命AI
淘天集团未来生活实验室的算法工程师们以ARPG游戏《黑神话:悟空》为平台,探索多模态大模型(VLM)在仅需纯视觉输入和复杂动作输出场景中的能力边界。他们提出了一种名为VARP的新框架,该框架由动作规划系统和人类引导的轨迹系统组成,成功在90%的简单和中等难度战斗场景中取得胜利。研究展示了VLMs在传统上由强化学习主导的任务中的潜力,并提供了宝贵的人类操作数据集,为未来研究奠定了基础。
|
9月前
|
测试技术 双11 开发者
一文分析架构思维之建模思维
软件里的要素不是凭空出现的,都是源于实际的业务。本文从软件设计本源到建模案例系统的介绍了作者对于建模的思维和思考。
|
9月前
|
数据可视化 项目管理 UED
如何进行有效的优先级管理:6大模型解析
优先级管理看似简单,但要真正做到高效、精准,却需要方法和技巧的支撑。3分钟了解6种优先级管理方法。
611 0
如何进行有效的优先级管理:6大模型解析
|
机器学习/深度学习 自动驾驶 搜索推荐
大模型技术的端侧部署
【1月更文挑战第14天】大模型技术的端侧部署
899 4
大模型技术的端侧部署
|
11月前
|
人工智能 C语言 Python
AI师傅+通义灵码=零基础小白上手python真·不是梦
作为一名不懂编程的设计师,我一直渴望掌握AI辅助设计。在快刀青衣的推荐下,我尝试了AI师傅和通义灵码,成功写出了第一个Python程序,并理解了编程的基本概念。通过AI师傅的引导和通义灵码的帮助,我顺利完成了Coursera上的Python课程,获得了两张证书。这种学习方式让编程变得不再遥不可及,为我的未来学习打开了新大门。
|
机器学习/深度学习 Python
探索Python中的集成方法:Stacking
探索Python中的集成方法:Stacking
764 3