JSP 自定义标签实现数据精度格式化

   在java web 开发中,以jsp作为页面显示的环境,jsp标签的使用大大简化了页面对后台数据的操作,但是对于一些特殊的要求,可以根据需求自定义标签实现。废话少说,直接上步奏代码。

开发工具:Eclipse Luna

整体架构:spring spring mvc mybatis


1.新建一个实体类,声明属性,并继承TagSupport类

public class NumberTag extends TagSupport {
	private static final long serialVersionUID = -2312310581852395045L;
	private String pattern;//数值单位
	private String value;//数值

	@Override
	public int doStartTag() throws JspException {
		String unit =pattern;
		BigDecimal b = new BigDecimal(value);//值
		String s = NumberUnit.getBwNumberValue(b,unit);
		try {
			pageContext.getOut().write(s);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return super.doStartTag();
	}

	public void setValue(String value) {
		if(value.isEmpty()){
			value=0.00+"";
		}
		this.value = value;
	}

	public void setPattern(String pattern) {
		this.pattern = pattern;
	}
}

2.数值单位换算类 NumberUnit.java

public class NumberUnit{

/***
	 * 
	* @Title: getBwNumberValue 
	* @Description: TODO   格式化数据
	* @param num 值
	* @return
	* @throws
	 */
	public static String getBwNumberValue(BigDecimal num,String tunit){
		 DecimalFormat df=(DecimalFormat)NumberFormat.getInstance(); 
		 df.setMaximumFractionDigits(2);
		 df.applyPattern("0.00");
		 double total = num.doubleValue();
		 String value=total+"";
		 if(tunit.equalsIgnoreCase("Mbps"))	{
				value=df.format(total);
			}else if(tunit.equalsIgnoreCase("Gbps")){
				value=df.format(total/1000);
			}
		 return value;
	}

}


3.编写numbertag.tld文件

<?xml version="1.0" encoding="UTF-8"?>
<taglib>
	<tlib-version>1.0</tlib-version>
	<jsp-version>1.2</jsp-version>

	<tag>
		<name>mynumber</name> <!--自定义标签名称--->
		<tag-class>xx.xx.xx.NumberTag</tag-class><!--自定义标签类全路径--->
		<body-content>JSP</body-content>
		<attribute>
			<name>value</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>pattern</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
	</tag>
</taglib>  

4.jsp页面引用

导入标签: <%@ taglib prefix="mynumberfmt" uri="/WEB-INF/numbertag.tld"%>

使用自定义标签:<mynumberfmt:mynumber value="${datalist.data }" pattern="0.00"/>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值