JSP自定义标签实例(二)

来源:互联网 发布:成都旅游 知乎 编辑:程序博客网 时间:2024/05/22 03:40

1、自定义标签处理类

import java.util.Calendar;
import java.util.Date;


import org.apache.shiro.SecurityUtils;


import com.cxdai.common.Dictionary;
import com.cxdai.portal.util.CharacterEncoder;
import com.cxdai.security.ShiroUser;


/**
 * <p>
 * Description:自定义el表达式<br />
 * </p>
 * 
 * @title ELTag.java
 * @author qiongbiao.zhang
 * @version 0.1 2014年6月17日
 */
public class ELTag {


    public static String encode(String input) {
        return CharacterEncoder.encodeURL(input, "UTF-8");
    }


    public static String decode(String input) {
        return CharacterEncoder.decodeURL(input, "UTF-8");
    }


    public static Date currDate() {
        return new Date();
    }


    public static int year(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.YEAR);
    }


    public static int month(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.MONTH) + 1;
    }


    public static int day(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.DAY_OF_MONTH);
    }


    public static int lastday(int year, int month) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, month - 1);
        return cal.getActualMaximum(Calendar.DAY_OF_MONTH);
    }


    public static String minDisplay(String str, int length) {
        if (str == null) {
            return null;
        }
        StringBuilder sb = new StringBuilder(length);
        int l = 0;
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            sb.append(ch);
            // 判断是否数字,字母,特殊字符


            if (isChinese(ch)) {
                l += 2;
            } else {
                l += 1;
            }


            if (l >= length) {
                break;
            }
        }
        sb.append(l >= length ? ".." : "");
        return sb.toString();
    }


    public static boolean isChinese(char a) {
        int v = a;
        return (v >= 19968 && v <= 171941);
    }
}


2、自定义标签文件

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">


<tlib-version>1.0</tlib-version>
<short-name>myel</short-name>


<function>
<name>encode</name>
<function-class>com.cxdai.common.tag.ELTag</function-class>
<function-signature>java.lang.String encode(java.lang.String)</function-signature>
</function>


<function>
<name>decode</name>
<function-class>com.cxdai.common.tag.ELTag</function-class>
<function-signature>java.lang.String decode(java.lang.String)</function-signature>
</function>


<function>
<name>currDate</name>
<function-class>com.cxdai.common.tag.ELTag</function-class>
<function-signature>java.util.Date currDate()</function-signature>
</function>


<function>
<name>year</name>
<function-class>com.cxdai.common.tag.ELTag</function-class>
<function-signature>int year(java.util.Date)</function-signature>
</function>


<function>
<name>month</name>
<function-class>com.cxdai.common.tag.ELTag</function-class>
<function-signature>int month(java.util.Date)</function-signature>
</function>


<function>
<name>day</name>
<function-class>com.cxdai.common.tag.ELTag</function-class>
<function-signature>int day(java.util.Date)</function-signature>
</function>


<function>
<name>lastday</name>
<function-class>com.cxdai.common.tag.ELTag</function-class>
<function-signature>int lastday(int, int)</function-signature>
</function>

<function>
<name>minDisplay</name>
<function-class>com.cxdai.common.tag.ELTag</function-class>
<function-signature>java.lang.String minDisplay(java.lang.String, int)</function-signature>
</function>
</taglib>


3、引用自定义标签

<%-- 引用自定义标签 --%>
<%@ taglib prefix="myel" uri="/WEB-INF/ELTag.tld"%>

0 0
原创粉丝点击