首页>>程序代码>>OGNL表达式及Struts2常用标签的详细用法实例
OGNL表达式及Struts2常用标签的详细用法实例
来源: http://wang09si.blog.163.com/ 时间: 2015-01-13 14:04:22

一、OGNL(.、#、$、%)表达式

在Struts 2框架中,值栈(Value Stack)就是OGNL的根对象。如果用户需要访问值栈中的对象,则可以通过如下代码访问值栈中的属性:

${foo}     // 获得值栈中的foo属性

如果访问其他Context中的对象,由于不是根对象,在访问时需要加#前缀。

application对象:用来访问ServletContext,如#application.userName或者#application [“userName”]

相当于调用Servlet的getAttribute("userName")。

session对象:用来访问HttpSession,如#session.userName或者#session[“userName”]

相当于调用session.getAttribute("userName")。

request对象:用来访问HttpServletRequest属性的Map,如#request.userName或者#request[“userName”]

相当于调用request.getAttribute("userName")。

在类中:Map request=(Map)ActionContext.getContext().get("request");

request.put("name",getName());就是先得到request对象,然后把值放进去。

在JSP页面中:<s:property value="#request.name"/>,其中#request.name相当于调用了request.getAttribute(“name”);

二、数据标签

1. <s:property>标签

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

例如:<s:property value="#request.name"/>

2. <s:set>标签

name:该属性是必选的,重新生成新变量的名字。

例如:<s:property value="#session['user'].username"/>

<s:property value="#session['user'].age"/>

<s:property value="#session['user'].address"/>

等价于:<s:set name="user" value="#session['user'] " />

<s:property value="#user.username"/>

<s:property value="#user.age" />

<s:property value="#user.address" />

3. <s:param>标签

param标签主要用于为其他标签提供参数,该标签有如下几个属性:

name:该属性是可选的,指定需要设置参数的参数名。

value:该属性是可选的,指定需要设置参数的参数值。

4. <s:bean>标签

name:该属性是必选的,用来指定要实例化的JavaBean的实现类。

id:该属性是可选的,如果指定了该属性,从而可通过id属性来访问该JavaBean实例。

例如:有一个Student类,该类中有name属性,并有其getter和setter方法:

类中:public class Student {

 private String name;

 public String getName() {  return name; }

 public void setName(String name) { this.name=name; }

}

JSP页面中:<s:bean name="Student">

 <s:param name="name" value="'zhangsan'"/>

    <s:property value="name"/>

</s:bean>

或:<s:bean name="Student" id="s" >

    <s:param name="name" value="'zhangsan'"/>

</s:bean>

<s:property value="#s.name"/>

5. <s:action>标签

使用action标签可以允许在JSP页面中直接调用Action。

name:该属性是必选的,指定该标签调用哪个Action。

6. <s:date>标签

date标签主要用于格式化输出一个日期。该标签有如下属性:

format:该属性是可选的,如果指定了该属性,将根据该属性指定的格式来格式化日期。

nice:该属性是可选的,指定是否输出指定日期和当前时刻之间的时差。默认为false。

name:属性是必选的,指定要格式化的日期值。

其用法为:

<s:date name="指定日期取值" format="日期格式"/><!-- 按指定日期格式输出 -->

<s:date name="指定日期取值" nice="true"/><!-- 输出时间差 -->

<s:date name="指定日期取值"/><!—默认格式输出-->

7. <s:include>标签

include标签用于将一个JSP页面或一个Servlet包含到本页面中。

value:该属性是必选的,指定需要被包含的JSP页面或Servlet。

例如:<s:include value="JSP或Servlet文件" id="自定义名称"/>

三、控制标签

1. <s:if>/<s:elseif>/<s:else>标签

跟普通Java程序中的if-elseif-else用法基本相同,这里就不多说了。

2. <s:iterator>标签

该标签主要用于对集合进行迭代,这里的集合包含List、Set,也可以对Map类型的对象进行迭代输出。该标签的属性如下:

value:该属性是可选的,指定被迭代的集合,被迭代的集合通常都由OGNL表达式指定。

status:该属性是可选的,指定迭代时的IteratorStatus实例,通过该实例可判断当前迭代元素的属性。

例如:<%@ page language="java" pageEncoding="utf-8"%>

<%@taglib uri="/struts-tags" prefix="s" %>

<html>

<head>

     <title>控制标签</title>

</head>

<body>

    <table border="1" width="200">

      <s:iterator value="{'apple','orange','pear','banana'}" id="fruit" status="st">

    <tr <s:if test="#st.even">style="background-color:silver"</s:if>>

        <td><s:property value="fruit"/></td>

    </tr>

       </s:iterator>

     </table>

</body>

</html>

3. <s:append>标签

例如:<body>

        <s:append id="newList">

   <s:param value="{'apple','orange','pear','banana'}"/>

   <s:param value="{'chinese','english','french'}"/>

        </s:append>

        <table border="1" width="200">

      <s:iterator value="#newList" id="fruit" status="st">

         <tr <s:if test="#st.even">style="background-color:silver"</s:if>>

            <td><s:property value="fruit"/></td>

        </tr>

      </s:iterator>

        </table>

</body>

4.<s:merge>标签

与append标签作用相似,只是它们所拼接产生的新集合元素顺序不同,其中merge是每次分别在每一个集合取一个元素进行拼接。

四、表单标签

1. <s:checkboxlist>标签

<s:checkboxlist label="请选择你喜欢的水果" list="{'apple','oranger','pear','banana'}" name="fruit"></s:checkboxlist>

或者为:

<s:checkboxlist label="请选择你喜欢的水果" list="#{1:'apple',2:'oranger',3:'pear',4:'banana'}" name="fruit"></s:checkboxlist>

2. <s:combobox>标签

<s:combobox label="请选择你喜欢的水果" list="{'apple','oranger','pear','banana'}" name="fruit"></s:combobox>

3. <s:datetimepicker>标签

<s:form action="" method="">

     <s:datetimepicker name="date" label="请选择日期"></s:datetimepicker>

</s:form>

4. <s:select>标签

例如:<s:select list="{'apple','oranger','pear','banana'}"  label="请选择你喜欢的水果"></s:select>

5. <s:radio>标签

例如:<s:radio label="性别" list="{'男','女'}" name="sex"></s:radio>

6. <s:head>标签

head标签主要用于生成HTML页面的head部分,在使用<s:datetimepicker>标签时要在head中加入该标签。

本页地址:http://www.easytd.com/chengxudaima/d_15011314636.html

上一篇:C#使用foreach循环一维数组和二维数组之代码 下一篇:PHP解析读取XML的两种方式(DOMDocument,SAX解析器)