struts2标签和EL表达式
struts2标签库开始 可以支持EL表达式。但是从2.0.11开始,不再支持EL表达式。Struts推荐更为强大的OGNL语言。
常用数据标签
property 输出变量值
property标签用于输出变量的值,输出OGNL表达式的结果。前面我们已经调用了多次!下面是示例代码:
<s:property value="3*3" /> <s:property value="#request.a" /> |
set 设置变量值
通过set标签,我们可以给指定的变量设值,或进行集合的初始化。
<s:set var="s" value="{00,11,22,33,44,55,66,77,88,99}" ></s:set> <s:set var="s2" value="'aaa'" scope="request"></s:set> |
action 执行Action
action标签用于访问某个action,并将结果包含进来或者保存到指定变量中。这里有这样几个参数需要我们理解:
name 将要执行的action在配置文件中的名字(不需要加.action后缀)
namesapce 将要执行的action所在的命名空间(可选,但是强烈建议加上!)
executeResult 是否将action执行的结果页面包含在本页面中
ignoreContextParam: 可选,指定该页面的请求参数是否需要传入action(如果传参,置为false)
var 将该action对象以这里指定的名字放入StackContext中,便于后续引用
测试代码:
package com.bjsxt.struts.test;
import com.opensymphony.xwork2.ActionSupport;
public class TestOGNLAction extends ActionSupport{
private String uname;
public String execute() throws Exception { //增加测试代码 System.out.println("TestOGNLAction.execute()"); return this.SUCCESS; }
public String getUname() { return uname; }
public void setUname(String uname) { this.uname = uname; }
} |
<action name="testOgnl" class="com.bjsxt.struts.test.TestOGNLAction"> <result name="success">/ok.jsp</result> </action> |
Ok.jsp的内容如下: <%@ page language="java" import="java.util.*,com.bjsxt.struts.test.*" pageEncoding="gbk"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>测试OGNL</title> </head> <body> <h2>(((<s:property value="uname" />)))</h2> </body> </html> |
Test.jsp内容如下: <%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>测试struts2</title> </head> <body> <s:action var="a" name="testOgnl" namespace="/" executeResult="true" ignoreContextParams="false" > <s:param name="uname">老高</s:param> </s:action> <s:property value="#a.uname" /> --<s:property value="uname" /> <s:debug></s:debug> </body> </html> |
date 输出日期
date标签用于格式化输出时间。类似于我们学的DateFormat类的作用。
测试代码:
<% request.setAttribute("d",new Date(23432432L)); %> <s:date name="#request.d" format="yyyy-MM-dd" nice="true" /> <!-- 增加nice,format属性不起作用 --> <hr/> <s:date name="#request.d" format="yyyy-MM-dd" var="c"/> <!-- 使用var,时间不会打印出,而是保存在c变量中! --> <hr/> <s:property value="#c" /> |
输出结果:
include 包含其他资源执行结果
作用类似于<jsp:include>用于包含其他资源的执行结果。
新建1.jsp,代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <h1>被包含!!</h1> |
Ok.jsp,代码如下:
<%@ page language="java" import="java.util.*,com.bjsxt.struts.test.*" pageEncoding="gbk"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>测试OGNL</title> </head> <body> <a>我是ok.jsp</a> <s:include value="1.jsp"></s:include> <a>我是ok.jsp</a> </body> </html> |
结果显示为: