Java 自定义tld标签库

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">
	...
	<!-- zip resources -->
	<filter>
		<filter-name>GZIPFilter</filter-name>
		<filter-class>com.tacitknowledge.filters.gzipfilter.GZIPFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>GZIPFilter</filter-name>
		<url-pattern>*.js</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>GZIPFilter</filter-name>
		<url-pattern>*.css</url-pattern>
	</filter-mapping>
	<!-- self defi tag  -->
	<jsp-config>
		<taglib>
			<taglib-uri>http://www.xxx.com.cn/project/functions</taglib-uri>
			<taglib-location>/WEB-INF/tld/xxx-html.tld</taglib-location>
		</taglib>
	</jsp-config>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<error-page>
		<error-code>500</error-code>
		<location>/pages/error.jsp</location>
	</error-page>
	<error-page>
		<error-code>503</error-code>
		<location>/pages/error.jsp</location>
	</error-page>
	<error-page>
		<error-code>404</error-code>
		<location>/pages/error.jsp</location>
	</error-page>
	...
</web-app>


在WEB-INF下面新建tld目录

新增

xxx-html.tld

<?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/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
>
<tlib-version>1.0</tlib-version>
<short-name>wapHtml</short-name>
<uri>http://www.xxx.com.cn/project/functions</uri>
	<function>
	   <name>
	        replaceSpecialChar
	   </name>
	   <function-class>com.paic.mall.util.tag.WapHtmlTag</function-class>
	   <function-signature>java.lang.String replaceSpecialChar(java.lang.String,java.lang.String,java.lang.String)</function-signature>
	</function>
	<function>
	   <name>
	        splitChar
	   </name>
	   <function-class>com.paic.mall.util.tag.WapHtmlTag</function-class>
	   <function-signature>java.lang.String[] splitChar(java.lang.String,java.lang.String)</function-signature>
	</function>
	<function>
	   <name>
	        cutStr
	   </name>
	   <function-class>com.paic.mall.util.tag.WapHtmlTag</function-class>
	   <function-signature>java.lang.String cutStr(java.lang.String,java.lang.Integer)</function-signature>
	</function>
	<function>
	   <name>
	        cutStrExt
	   </name>
	   <function-class>com.paic.mall.util.tag.WapHtmlTag</function-class>
	   <function-signature>java.lang.String cutStrExt(java.lang.String,java.lang.Integer,java.lang.Integer,java.lang.String)</function-signature>
	</function>
	<function>
	   <name>
	        convertNumber
	   </name>
	   <function-class>com.paic.mall.util.tag.WapHtmlTag</function-class>
	   <function-signature>java.lang.String convertNumber(java.lang.String)</function-signature>
	</function>
		<function>
	   <name>
	        dateToStr
	   </name>
	   <function-class>com.paic.mall.util.tag.WapHtmlTag</function-class>
	   <function-signature>java.lang.String dateToStr(java.util.Date,java.lang.String)</function-signature>
	</function>
	
</taglib>

WapHtmlTag.java

public class WapHtmlTag {
	
	/**
	 * 把sourceStr含有repChar的字符替换为destChar
	 * @param sourceStr
	 * @param oldChar
	 * @param newChar
	 * @return
	 */
	public static String replaceSpecialChar(String sourceStr, String oldChar, String newChar){
		if(StringUtils.isEmpty(sourceStr)){
			return "";
		}
		sourceStr = sourceStr.toLowerCase();
		sourceStr = sourceStr.replace(oldChar, newChar);
		return sourceStr;
	}


	/**
	 * 分割字符串,至少保持数组长度有两位
	 * @param sourceStr
	 * @param split
	 * @return
	 */
	public static String[] splitChar(String sourceStr, String split){
		if(StringUtils.isEmpty(sourceStr)){
			return new String[2];
		}
		String[] array = sourceStr.split(split);
		if(null != array && array.length > 0){
			if(array.length == 1){
				String[] ay = new String[2];
				ay[0] = array[0];
				return ay;
			}
			return array;
		}
		return new String[2];
	}


	/**
	 * 截取字符串,如果不超过length,则返回原来字符串
	 * @param sourceStr
	 * @param length
	 * @return
	 */
	public static String cutStr(String sourceStr, Integer length){
		if(StringUtils.isEmpty(sourceStr)){
			return "";
		}
		int sourceLength = sourceStr.length();
		if(sourceLength > length){
			sourceStr = sourceStr.substring(0, length) + "...";
		}
		return sourceStr;
	}


	/**
	 * 截取字符串,如果不超过length,则返回原来字符串
	 * @param sourceStr 原串
	 * @param startIndex 开始位置
	 * @param endIndex 结束位置
	 * @param subffix 后缀
	 * @return
	 */
	public static String cutStrExt(String sourceStr, Integer startIndex, Integer endIndex, String subffix){
		if(StringUtils.isEmpty(sourceStr)){
			return "";
		}
		int sourceLength = sourceStr.length();
		if(sourceLength <= startIndex){
			return sourceStr;
		}
		int end = sourceLength - startIndex;
		if(end > endIndex){
			sourceStr = sourceStr.substring(startIndex, endIndex) + subffix;
		}else{
			sourceStr = sourceStr.substring(startIndex, sourceLength) + subffix;			
		}
		return sourceStr;
	}


	/**
	 * 数字转换
	 * @param number 数字
	 * @return
	 */
	public static String convertNumber(String numberStr){
		if(StringUtils.isEmpty(numberStr)){
			return "";
		}
		if(!StringUtils.isNumeric(numberStr)){
			return "";
		}
		double number = Double.parseDouble(numberStr);
		String str = "";
		DecimalFormat df = new DecimalFormat("######0.00");
		if(number >= 10000){
			str = String.valueOf(df.format(Double.valueOf(number)/10000));//转化为万,保存两位小数
			String strLeft = str.substring(0, str.indexOf("."));//小数点左边
			String strRight = str.substring(str.indexOf(".")+1, str.length());//小数点右边
			int minERight = Integer.parseInt(strRight);
			if(minERight <= 0){//判断右边小于0,则去掉右边的两位小数
				str = strLeft;
			}
			return str;
		}else{
			return numberStr;
		}
	}
	
	 /**
	  * 把时间类型转化为String类型
	 * @param date
	 * @return
	 */
	public static String dateToStr(Date date,String partn){
		if(null == date){
			return "";
		}
		  SimpleDateFormat sdf=new SimpleDateFormat(partn);  
		  String str=sdf.format(date);
		return str; 
	  }


}

使用方法

xxx.jsp

<strong style="font-style: italic;"><</strong>%@ taglib prefix="waptag" uri="http://www.pingan.com.cn/jrqjd/functions" %>
<c:if test="${not empty lujinsuoList}">
					<div class="content-block-title">陆金所理财产品(<i>${fn:length(lujinsuoList)}</i>)</div>
					<div class="list-block">
				      	<ul>
					        <c:forEach items="${lujinsuoList}" var="record" varStatus="item">
						        <li class="swipeout">
							        <label class="swipeout-content item-content label-checkbox">
										<input type="checkbox" name="shop-cart-checkbox" class="shop-cart-checkbox" value="${record.idWapShoppingCart }">
										<div class="item-media"><i class="icon icon-form-checkbox"></i></div>
						        		<div class="ub-f1 ubox-v product-info">
						        			<a class="link title-name" href="${waptag:splitChar(record.productUrl, 'mamc/')[1] }">${record.productName }</a>
						        			<div class="title-number">${record.productCode }</div>
						        			<div class="ubox title-value">
						        				<span class="ub-f1">${waptag:replaceSpecialChar(record.productUniqueFeature, '%','<i>%</i>')}</span>
						        				<span class="ub-f1">${waptag:splitChar(record.productIntroduce, '万')[0]}<i>万</i></span>
							        			<span class="ub-f1">${waptag:splitChar(record.productIntroduce, '万')[1]}</span>
						        			</div>
						        			<div class="ubox">
						        				<div class="ub-f1">预期收益</div>
						        				<div class="ub-f1">起购价</div>
						        				<div class="ub-f1">起购期限</div>
						        			</div>
						        		</div>
						        		<div class="ubox-v buy-info">
						        			<a href="${ctx}/lujinsuo/yuyue/tianxie.do?${sessionScope.wapChaoshiUrlParams }&pid=${record.productId }" class="external ub-f1 ubox text-1 ub-ac">预约</a>
						        		</div>
					        		</label>
					        		<div class="swipeout-actions-right">
								        <a href="#" class="swipeout-delete bg-red">删除</a>
								    </div>
						        </li>
					        </c:forEach>
				      	</ul>
				    </div>
				    </c:if>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值