18、通用标签和静态调用

学习目标:

1、了解通用标签的使用

2、了解静态调用的使用

学习过程:

一、通用标签

通用标签也是比较简单,这里就不一一的介绍了,用得多的还是循环迭代和条件判断这些,下面就举这两个作为例子讲解一下,其他的标签大家可以参考一下struts2的官方文档:

http://struts.apache.org/release/2.3.x/docs/generic-tag-reference.html

示例代码如下:

<%@ 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)"/>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值