• strutsOGNL标签


    1、property标签

    <s:property value=“#name" default="a default value" />     

         * default:可选属性, 如果需要输出的属性值为null,则显示该属性指定的值

         *  escape:可选属性,指定是否格式化HTML代码。 escape=“false”,hr作为html标签使用

         *  value:   可选属性,指定需要输出的属性值,如果没有指定该属性,则默认输 出ValueStack栈顶的值。

    1       <s:property  value="#request.username"/>:输出栈顶的值
    2             输出: username=username_valueStack, msgxx=msg_valueStack
    3 
    4       <s:property  value="#request.username111" default="default value"/>
    5     <s:property value="%{'<hr> hr的使用'}"  escape="false"  />
    6             输出:<hr> hr的使用
    7             注:escape=“false”时,hr作为html标签使用

    2、set标签

    set标签用于将某个值放入指定范围。

           var:变量的名字,name,id和var表达的含义是一样的,name,id被var替代

           scope:指定变量被放置的范围,该属性可以接受application、session、request、 page或action。如果没有设置该属性,则默认放置在action中。

           value:赋给变量的值.如果没有设置该属性,则将ValueStack栈顶的值赋给变量。

    1       <s:set value="#request.username"  var="xxx“ scope=“request” /><br>
    2       <s:property value=“#request.xxx" /><br>
    3       <s:set value="#request.username"  var="xxx" scope="page" /><br>
    4       <s:property value="#attr.xxx" /><br>
    5       <s:set value="#request.username"  var="xxx" /><br>
    6       <s:property value="xxx" /><br>

    3、push标签

      push:将对象放入栈顶,不能放入其他范围,当标签结束,会从栈顶删除。

           value:要push到堆栈中的值 。

    1    <s:push value="#request.username">
    2            <s:property/>
    3      </s:push>
    4      <br>
    5      测试删除: <s:property/>

     4、 action标签

    Action:通过指定命名空间和action名称,该标签允许在jsp页面直接调用Action-相当于直接访问

           name:action名字(不包括后缀,如.action)

           namespace:action所在命名空间

           executeResult:Action的result是否需要被执行,默认值是false不执行

    1 <package name="ognl"   namespace="/ognl" extends="struts-default" >
    2         <action name="ognlAction_*" class="cn.itcast.ognl.OgnlAction" method="{1}">
    3            <result name="ognl">/ognl/ongl.jsp?msg=${msgxx}</result>
    4         </action>   
    5  </package>   
    6 
    7 <s:action name="ognlAction_test" namespace="/ognl" executeResult="true" />

    5、 iterator标签

    Iterator:标签用于对集合进行迭代,这里的集合包含List、Set和数组。

    value:  可选属性,指定被迭代的集合,如果没有设置该属性,则使用ValueStack栈顶的集合。

    var:     可选属性,引用变量的名称.

    status: 可选属性,该属性指定迭代时的IteratorStatus实例。该实例包含如下几个方法:

        int getCount(),返回当前迭代了几个元素。

        int getIndex(),返回当前迭代元素的索引。

        boolean isEven(),返回当前被迭代元素的索引是否是偶数

        boolean isOdd(),返回当前被迭代元素的索引是否是奇数

        boolean isFirst(),返回当前被迭代元素是否是第一个元素。

        boolean isLast(),返回当前被迭代元素是否是最后一个元素。

     1 <style type="text/css" 
     2    .odd{
     3            background-color: red; 
     4    .even{
     5            background-color:blue;}
     6   </style>
     7 
     8 <s:iterator value="%{#request.persons}" var="person">
     9    <s:property value="#person"/><br>
    10 </s:iterator>
    11 <s:iterator value="%{#request.persons}" var="person">
    12    <s:property value="#person.id"/>~<s:property value="#person.name"/>~<s:property value="#person.age"/>
    13 </s:iterator>
    14 <s:iterator value="%{#request.persons}" var="person" status="st">
    15    返回当前迭代了几个元素. <s:property value="#st.count"/><br>
    16    返回当前迭代元素的索引.<s:property value="#st.index"/><br>
    17    返回当前被迭代元素的索引是否是偶数.<s:property value="#st.even"/><br>
    18    返回当前被迭代元素的索引是否是奇数.<s:property value="#st.odd"/><br>
    19    返回当前被迭代元素是否是第一个元素.<s:property value="#st.first"/><br>
    20    返回当前被迭代元素是否是最后一个元素.<s:property value="#st.last"/><br><br>
    21 </s:iterator>    
    22 
    23 <table border="1">
    24    <s:iterator value="%{#request.persons}" var="person" status="st">
    25       <tr class="<s:property value="#st.even?'evenClass':'oddClass'"/>">
    26          <td><s:property value="#person.id"/></td>
    27          <td><s:property value="#person.name"/></td>
    28          <td><s:property value="#person.age"/></td>
    29       </tr>
    30    </s:iterator>    
    31 </table>

    6、 if/elseif/else标签
      if/elseif/else  基本的流程控制.‘If’标签可单独使用也可以和‘Else If’标签和(或)一个多个‘Else’一起使用 

    1 <s:if test="#age==23">
    2     23
    3 </s:if>
    4 <s:elseif test="#age==21">
    5     21
    6 </s:elseif>
    7 <s:else>
    8     都不等
    9 </s:else> 
     1 <table border="1">
     2    <s:iterator value="%{#request.persons}" var="person" status="st">
     3       <tr class="<s:property value="#st.even?'evenClass':'oddClass'"/>">
     4          <td><s:property value="#person.id"/></td>
     5          <td><s:property value="#person.name"/></td>
     6          <td><s:property value="#person.age"/></td>
     7          <td><s:if test="#person.age<24">少年</s:if>
     8          <s:elseif test="#person.age<26">中年</s:elseif>
     9          <s:else>老年</s:else></td>
    10       </tr>
    11    </s:iterator>    
    12 </table>

    7、url标签

    url:该标签用于创建url,可以通过"param"标签提供request参数.

         value:如果不提供就用当前action,使用value后缀必须加.action

         action:用来生成url的action,如果没有则使用value

         namespace :命名空间

         var:引用变量的名称.

     1     <s:url action="ognlTagAction_test" namespace="/ognl" var="myurl">
     2          <s:param name="name" value="%{'张老师'}"></s:param>
     3          <s:param name="id" value="12"></s:param>
     4     </s:url>
     5 
     6     <a href='<s:property  value="#myurl" />' >xxxx</a><br>
     7     <a href='<s:property  value="%{#myurl}" />' >xxxx</a><br>
     8     
     9     使用value<br>
    10     <s:url value="ognlTagAction_test.action" namespace="/ognl" var="myurl">
    11          <s:param name="id" value="12"></s:param>
    12          <s:param name="cnname" value="%{'zhang'}"></s:param>
    13     </s:url>
    14 
    15     <a href='<s:property  value="#myurl" />' >xxxx</a><br>

    8、ognl操作集合

      a) 使用ognl操作list和数组. 

     1 Action中:
     2    List<Person> list = new ArrayList<Person>();
     3       for(int i=0;i<10;i++){
     4          Person p = new Person();
     5          p.setId(i);
     6          p.setName("lucy"+i);
     7          p.setAge(20+i);
     8          list.add(p);
     9       }
    10    request.setAttribute("persons", list);
    11 Jsp:
    12        集合的长度:<s:property value="#request.persons.size"/><br>
    1 Jsp:
    2  <s:iterator value="{1,2,3,4}">
    3      <s:property/>   <br>
    4   </s:iterator>
    5    
    6   <s:iterator value="{'s1','s2','s3','s4'}" var="s">
    7      <s:property value="#s"/>  <br>
    8   </s:iterator>

      b) 使用ognl操作map

        ognl用多种方式使用#号,每种是不同的.动态map对于动态单选按扭组很有用.

        创建map与创建list语法很相似,不同的是map前需要加"#"号.

     1   <s:iterator value="#{'key01':'value01','key02':'value02'}">
     2         <s:property/>   <br>
     3    </s:iterator>
     4   
     5    <s:iterator value="#{'key01':'value01','key02':'value02'}">
     6         key=<s:property value="key"/>   value=<s:property value="value"/> <br>
     7    </s:iterator>
     8    
     9    
    10    <s:iterator value="#{'key01':'value01','key02':'value02'}" var="map">
    11         key=<s:property value="#map.key"/>   value=<s:property value="#map.value"/> <br>
    12    </s:iterator>

     样例代码:

      1 <%@ page language="java" pageEncoding="utf-8"%>
      2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core"   prefix="c"%>
      3 <%@ taglib uri="/struts-tags"   prefix="s"%>
      4 <html>
      5   <head>
      6     <title>My JSP 'index.jsp' starting page</title>
      7     <meta http-equiv="description" content="This is my page">
      8   </head>
      9   <style type="text/css">
     10        .oddClass{
     11            background-color: red;}
     12        .evenClass{
     13            background-color:blue;}
     14   </style>
     15   <body>
     16     ognlTag.jsp<br>
     17     -------------------------------------------------------------------------------------------------------<br>
     18     property标签用于输出指定值:<br>
     19     <s:property value="#request.username"/><br>
     20     <s:property value="#request.username11" default="xxxxx"/><br>
     21     <s:property value="%{'<hr>hr的使用'}" escape="false"/><br>
     22     -------------------------------------------------------------------------------------------------------<br>
     23     set标签用于将某个值放入指定范围:<br>
     24     <s:set value="#request.username" var="xxx"/>
     25     <s:property value="#xxx"/><br>
     26     <s:set value="#session.username" var="xxx" scope="request"/>
     27     <s:property value="#request.xxx"/><br>
     28     <s:set value="#application.username" var="xxx" scope="page"/>
     29     <s:property value="#attr.xxx"/><br>
     30     -------------------------------------------------------------------------------------------------------<br>
     31     push:将对象放入栈顶,不能放入其他范围,当标签结束,会从栈顶删除。<br>
     32     <s:push value="#request.username">
     33         <s:property/><br><s:debug></s:debug>
     34     </s:push>
     35     
     36     -------------------------------------------------------------------------------------------------------<br>
     37     Action:通过指定命名空间和action名称,该标签允许在jsp页面直接调用Action <br>
     38     <s:action name="OgnlAction_test" namespace="/ognl" executeResult="fasle" />
     39     -------------------------------------------------------------------------------------------------------<br>
     40     Iterator:标签用于对集合进行迭代,这里的集合包含List、Set和数组。<br>
     41     <s:iterator value="#request.persons" var="person">
     42         <s:property value="#person"/><br>
     43     </s:iterator>
     44     <br><br>
     45     <s:iterator value="#request.persons" var="person">
     46         <s:property value="#person.id"/>~~<s:property value="#person.name" />~~<s:property value="#person.age" /><br>
     47     </s:iterator>
     48     <br><br>
     49     <s:iterator value="#request.persons" var="person" status="st">
     50         返回当前迭代了几个元素:<s:property value="#st.count"/><br>
     51         返回当前迭代元素的索引:<s:property value="#st.index"/><br>
     52         返回当前被迭代元素的索引是否是偶数:<s:property value="#st.even"/><br>
     53         返回当前被迭代元素的索引是否是奇数:<s:property value="#st.odd"/><br>
     54         返回当前被迭代元素是否是第一个元素:<s:property value="#st.first"/><br>
     55         返回当前被迭代元素是否是最后一个元素:<s:property value="#st.last"/><br>
     56     </s:iterator>
     57     <br><br>
     58     <table border="1">
     59         <s:iterator value="#request.persons" var="person" status="st">
     60             <tr class="<s:property value="#st.even?'evenClass':'oddClass'" />">
     61                 <td><s:property value="#person.id" /></td>
     62                 <td><s:property value="#person.name" /></td>
     63                 <td><s:property value="#person.age" /></td>
     64             </tr><br>
     65         </s:iterator>
     66     </table><br><br>
     67     -------------------------------------------------------------------------------------------------------<br>
     68     if/elseif/else  基本的流程控制.‘If’标签可单独使用也可以和‘Else If’标签和(或)一个多个‘Else’一起使用 <br>
     69     <table border="1">
     70         <s:iterator value="#request.persons" var="person" status="st">
     71             <tr class="<s:property value="#st.even?'evenClass':'oddClass'" />">
     72                 <td><s:property value="#person.id" /></td>
     73                 <td><s:property value="#person.name" /></td>
     74                 <td><s:property value="#person.age" /></td>
     75                 <td><s:if test="#person.age<24">少年</s:if>
     76                 <s:elseif test="#person.age<26">中年</s:elseif>
     77                 <s:else>老年</s:else></td>
     78             </tr><br>
     79         </s:iterator>
     80     </table>
     81     -------------------------------------------------------------------------------------------------------<br>
     82     url:该标签用于创建url,可以通过"param"标签提供request参数. <br>
     83     <s:url action="OgnlAction_test" namespace="/ognl" var="myurl"></s:url>
     84     <a href="<s:property value='#myurl'/>">测试test</a><br>
     85     -------------------------------------------------------------------------------------------------------<br>
     86     使用ognl操作list和数组. <br>
     87     <s:iterator value="{1,2,3,4}" var="list">
     88         <s:property value="#list"/><br>
     89     </s:iterator>
     90     <br><br>
     91     <s:iterator value="{'s1','s2','s3','s4'}" var="list">
     92         <s:property value="#list"/><br>
     93     </s:iterator>
     94     ognl也可直接创建集合对象. <br>
     95     <s:iterator value="#request.persons" var="person">
     96         <s:property value="#person.name"/><br>
     97     </s:iterator>
     98     使用ognl操作map <br>
     99     <s:iterator value="#{'01':'java','02':'php','03':'.net','04':'c++'}" var="abcd">
    100         <s:property value="#abcd.key"/>~~<s:property value="#abcd.value"/><br>
    101     </s:iterator>
    102     -------------------------------------------------------------------------------------------------------<br>
    103     集合的投影(只输出部分属性) <br>
    104     <s:iterator value="#request.persons.{name}" var="person">
    105         <s:property value="#person"/><br>
    106     </s:iterator>
    107     集合的过滤<br>
    108     <s:iterator value="#request.persons.{?#this.age>24}" var="person">
    109         <s:property value="#person.age"/><br>
    110     </s:iterator>
    111     集合的投影和过滤<br>
    112     <s:iterator value="#request.persons.{?#this.age>24}.{name}" var="person">
    113         <s:property value="#person"/><br>
    114     </s:iterator>
    115   </body>
    116 </html>
  • 相关阅读:
    数据库范式那些事[转]
    C# 之值类型与引用类型参数[基础]
    C# 实体类生成工具
    《浅谈线程池》笔记
    提高网站性能之 —— 减少图片HTTP 请求的方案
    SQL Server 2005 For XML[学习]
    关于数据类型导致的精确计算
    SQL Server 数据库实现之TSQL语句[备忘]
    C# 关键字ref 和out 的详细区别
    关于XML中的名称空间
  • 原文地址:https://www.cnblogs.com/hacket/p/3093256.html
Copyright © 2020-2023  润新知