OGNL

参考文章:http://blog.csdn.net/tjcyjd/article/details/6850203

http://blog.csdn.net/sd0902/article/details/8393099

 1.#符号的用途一般有三种:
   1)访问非根对象属性,例如示例中的#session.msg表达式,由于Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀。实际上#相当于ActionContext.getContext();;#session.msg表达式相当于ActionContext.getContext().getSession(). getAttribute(”msg”) 。
    2)用于过滤和投影(projecting)集合,如示例中的persons.{?#this.age>20}。

    3)用来构造Map,例如示例中的#{’foo1′:’bar1′, ’foo2′:’bar2′}。

名称
作用例子
parameters包含当前HTTP请求参数的Map#parameters.id[0]作用相当于
request包含当前HttpServletRequest的属性(attribute)的Map

#request.userName相当于

request.getAttribute("userName")

session包含当前HttpSession的属性(attribute)的Map

#session.userName相当于

session.getAttribute("userName")

application包含当前应用的ServletContext的属性(attribute)的Map

#application.userName相当于

application.getAttribute("userName")

attr用于按request > session > application顺序访问其属性(attribute)

获取Paraments对象的属性:<s:property value="#parameters.username"/>

OGNL中%的使用

用%{}可以取出存在值堆栈中的Action对象,直接调用它的方法.

例如你的Action如果继承了ActionSupport .那么在页面标签中,用%{getText('key')}的方式可以拿出国际化信息.

 

OGNL中$的使用

“$”有两个主要的用途

l         用于在国际化资源文件中,引用OGNL表达式

l         在Struts 2配置文件中,引用OGNL表达式


  1. struts控制标签

1>if/elseif/else用来进行分支控制

    <s:if test="表达式">标签体</s:if>

2>append:将多个集合对象拼接成一个新的集合

<s:append var="newList">
    	<s:param value="%{myList1}"></s:param>	
    	<s:param value="%{myList2}"></s:param>
    	<s:param value="%{myList3}"></s:param>	//数组取出方式:%{list}
    </s:append>
    <s:iterator value="%{#newList}">			//迭代数组取出:%{#list}
    	<s:property/>
    </s:iterator>

3>generator:用来将指定字符串按照制定分隔符分割成多个子串

        属性:separator--指定字符串的分隔符

                   val:制定被解析的字符串

                    var:将生成的Iterator设置为pageContext范围的属性

<s:generator separator="," val="%{'aaa,bbb,ccc,ddd,ee'}">
    	<s:iterator>
    		<s:property/>
    	</s:iterator>
</s:generator>

4>iterator:对集合数据进行迭代,根据集合条件遍历数组和集合类中的数据

    属性:status--迭代过程中的状态(status.first:第一个元素;status.last:最后一个元素;status.even:索引是否为偶数;status.odd:索引是否为奇数;status.index:当前索引值)

              step--每次迭代索引增加的值

               value--迭代的数组或者集合对象

                var--将生成的iterator设置为page范围的属性

<table border="1" cellpadding="0" cellspacing="0">
    	<s:iterator var="name" value="{'java','css','html','jquery'}" status="st">
    		<s:if test="st.odd">	status的状态信息
    			<tr style="background-color: red;">
    				<td><s:property value="name"/></td>
    			</tr>
    		</s:if>
    		<s:else>
    			<tr style="background-color: green">
    				<td><s:property value="name"/></td>
    			</tr>
    		</s:else>
    	</s:iterator>
    </table>

5>sort:对指定集合进行排序,但是必须要指定一个Comparator,使其实现Java.util.Comparator接口

        属性:source--指定的排序集合

                var--将生成的iterator设置为page范围的属性

                Comparator--指定进行排序实例

<!-- sort接口 -->
    <s:bean var="myComparator" name="com.action.ListComparator"></s:bean>
    <s:sort comparator="#myComparator" source="{'aaa','bb','ab'}" >
    	<s:iterator>
    		<s:property/>
    	</s:iterator>
    </s:sort>

6>.subset:取出指定集合的子集

        属性:source--指定源集合

                  decider--指定一个decider对象,该对象决定是否选择该元素(implements Decider)

<!-- subset标签 -->
    <s:bean name="com.action.EvenDecider" var="mydecider"></s:bean>
    <s:subset source="{1,2,3,4}" decider="#mydecider">
    	<s:iterator>
    		<s:property/>
    	</s:iterator>
    </s:subset>

2.struts数据标签

1>.a标签(用于构造HTML页面中的超链接)

        <s:a action/href/namespace/id/method></s:a>

2><s:action></s:action>从JSP页面来直接调用action,设置executeResult属性为true的话,可以直接得到action返回的视图页面

3><s:bean></s:bean>用于创建一个JavaBean实例

与param标签结合时可以传入指定属性值,因此指定JavaBean必须提供get和set方法

<s:bean name="com.model.User" var="user">
    	<s:param name="name" value="'tom'"></s:param>
    	<s:param name="age" value="20"></s:param>
    	<s:if test="#user.age>20">
    		<s:property/>
    	</s:if>
    </s:bean>

4>.<s:date></date>标签用于输出日期

5><s:debug></s:debug>用于开发者在开发的过程中调试程序时输出更多的调试信息

6>.<s:include></s:include>标签用于将一个JSP页面包含到该页面中

7><s:param></param>标签主要用于为其他标签提供参数

8><s:property></s:property>输出valuestack中对象的属性值

9><s:set></set>将某个值放入指定范围之内  如session request等

<s:set var="personName" value="person.name"></s:set>
    <s:property value="#personName"/>

10><s:text></s:text>输出国际化的资源文件

<s:textfield name="lastName" label="getText('person.lastName')"></s:textfield>

3.struts表单标签:

form:产生对应form标签

submit:产生提交按钮

checkbox:创建复选框

checkboxlist:一次性创建多个复选框

combox:创建文本框和下拉列表框的组合

doubleselect:创建两个相关联的列表框

file:用于创建一个文件选择框

label:用于生成HTML中的<label>标签

select:创建一个下拉列表框

outgroup:生成一个下拉列表框选项组

<!-- 下拉列表框选项组 -->
    <s:select label="my select" name="mySelect"
    list="%{#{'SUPERMAN':'Superman';'GOOD':good}}">
    <s:optgroup label="Adult"
    list="%{#{'Test':test;'BAD':bad}" />
    <s:optgroup label="China"
    list="%{#{'BUBEI':hubei;'BEIJING':beijing}" />
    </s:select>

password:创建一个密码输入框

radio:创建多个单选框

<!-- 创建多个单选框 -->
    <s:radio label="单选框" name="gender" list="#{'male':'男';'female':'女'}"
    listKey="key" listValue="value"></s:radio>
    <!-- 获取方式: -->
    <s:property value="gender"/>

reset:重置按钮

textarea/textfield:创建文本框

updownload:可以上下移动的列表框

转载于:https://my.oschina.net/u/1765238/blog/295127

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值