Struts2對於BigDecimal類型的轉換問題

 

Struts2對常用的數據類型如StringIntegerDouble等都添加了轉換器進行對應的轉換操作。

BigDecimal其實也算作是一種常用的數據類型,但Struts2沒有對該類型設置轉換器。沒有轉換器而且傳遞的值爲空的屬性,Struts2都給默認成了String類型進行處理。如果處理不當,就很容易造成類型轉換異常。

 

好在Struts2開放了接口,這樣如果有極特別的類型需要用到可以在程序中專門設置轉換器進行相應的處理。

 

BigDecimal類型的轉換器具體設置如下:

<!--[if !supportLists]-->1、  <!--[endif]-->新增BigDecimal類型轉換器,該轉換器繼承自StrutsTypeConverter

 

package com.hzunitech.system.common.convert;

import java.math.BigDecimal;
import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

public class BigDecimalConverter extends StrutsTypeConverter {

	@Override
	public Object convertFromString(Map context, String[] values, Class toClass) {
		BigDecimal bd = null;
		if(BigDecimal.class ==toClass){
			String bdStr = values[0];
			if(bdStr!=null&&!"".equals(bdStr)){
				bd = new BigDecimal(bdStr);
			}else{
				//bd = BigDecimal.valueOf(-1);
			}
			return bd;
		}		
		return BigDecimal.ZERO;
	}

	@Override
	public String convertToString(Map context, Object o) {
		
		if(o instanceof BigDecimal){
			BigDecimal b = new BigDecimal(o.toString()).setScale(2,BigDecimal.ROUND_HALF_DOWN);
			return b.toString();
		}		
		return o.toString();
	}

}
 

 

<!--[if !supportLists]-->2、  <!--[endif]-->classpath目錄下新建一個xwork-conversion.properties配置文件,具體內容如下:

java.math.BigDecimal=com.hzunitech.system.common.convert.BigDecimalConverter
 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章