学习目标:
1、了解通用标签的使用
2、了解静态调用的使用
学习过程:
一、通用标签
通用标签也是比较简单,这里就不一一的介绍了,用得多的还是循环迭代和条件判断这些,下面就举这两个作为例子讲解一下,其他的标签大家可以参考一下struts2的官方文档:
示例代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'userlist.jsp' starting page</title>
</head>
<body>
<a href="userAdd.jsp">添加用户</a>
<table>
<tr>
<td>序号</td>
<td>姓名</td>
<td>地址</td>
<td>年龄</td>
<td>性别</td>
<td>注册时间</td>
<td>操作</td>
</tr>
<s:iterator value="users" status="status" var="user">
<tr <s:if test="#status.odd==true">style="background-color: gray"</s:if> >
<td>
${status.index+1 }
</td>
<td>
<s:property value="#user.username"/>
</td>
<td>
<s:property value="addr"></s:property>
</td>
<td>
<s:property value="age"></s:property></td>
<td>
<s:if test="gender==1">
男
</s:if>
<s:else>
女
</s:else>
</td>
<td>
<s:property value="registerTime"/>
</td>
<td>
<a href="toupdate.do?uid=<s:property value='userId'/>">修改</a>
</td>
</tr>
</s:iterator>
</table>
20岁以下
<table>
<tr>
<td>序号</td>
<td>姓名</td>
<td>地址</td>
<td>年龄</td>
<td>性别</td>
<td>注册时间</td>
<td>操作</td>
</tr>
<!-- 投影 -->
<s:iterator value="users.{? #this.age <20}" status="status" var="user">
<tr <s:if test="#status.odd==true">style="background-color: gray"</s:if> >
<td>
${status.index+1 }
</td>
<td>
<s:property value="#user.username"/>
</td>
<td>
<s:property value="addr"></s:property>
</td>
<td> <s:property value="age"></s:property></td>
<td>
<s:if test="gender==1">
男
</s:if>
<s:else>
女
</s:else>
</td>
<td>
<!-- 静态调用 -->
<!-- @类@方法名(...) -->
<s:property value="@com.util.MyDateFromat@formatDate(#user.registerTime)"/>
</td>
<td>
<a href="toupdate.do?uid=<s:property value='userId'/>">修改</a>
</td>
</tr>
</s:iterator>
</table>
</body>
</html>
二、静态调用
静态调用事实上并不推荐使用,因为这样可能会破坏了MVC三层框架的结构,不过有的时候还是挺有用的,但是大家不要滥用就是了。静态调用其实就是在页面上面直接调用后台的java代码里面的静态方法。步骤如下:
1、设置配置文件。支持静态方法调用
#是否可以访问后台的静态方法
struts.ognl.allowStaticMethodAccess=true
2、定义静态方法。代码如下:
package com.util;
import java.sql.Date;
import java.text.SimpleDateFormat;
public class MyDateFromat {
public static String formatDate(Date date){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
}
3、在页面上面调用
调用格式是:
@完整类名@方法名(...)。
<!-- 静态调用 -->
<!-- @类@方法名(...) -->
<s:property value="@com.util.MyDateFromat@formatDate(#user.registerTime)"/>