org.apache.commons.beanutils.ConversionException: No value specified for 'Date'

環境:org.apache.commons.beanutils的版本號爲1.8.3


註冊時間轉換器代碼如下:

org.apache.commons.beanutils.converters.DateConverter dateConverter = new org.apache.commons.beanutils.converters.DateConverter();
dateConverter.setUseLocaleFormat(true);
dateConverter.setPatterns(new String[]{Constants.CONTEXT_KEY_FORMAT_DATE_VALUE, Constants.CONTEXT_KEY_FORMAT_DATETIME_VALUE});
ConvertUtils.register(dateConverter, Date.class);

當提交的時間沒有值的時候,會報出org.apache.commons.beanutils.ConversionException: No value specified for 'Date'錯誤,查看了apache源代碼,發現原因是因爲org.apache.commons.beanutils.converters.DateConverter轉換String爲Date時,發現是空值,即報出錯誤,源代碼如下


org.apache.commons.beanutils.converters.DateTimeConverter類第321行開始

String stringValue = value.toString().trim();
if (stringValue.length() == 0) {
	return handleMissing(targetType);
}



解決方案:

自己寫個日期轉換類,由於org.apache.commons.beanutils.converters.DateConverter類被標記爲final,不可繼承,所以繼承DateConverter的父類DateTimeConverter,類的內容是在org.apache.commons.beanutils.converters.DateConverter內容上增加了對convertToType方法的重載,完整代碼如下


package com.lmiky.jdp.base.converter;

import java.util.Date;

import org.apache.commons.beanutils.converters.DateTimeConverter;

/**
 * 日期轉換器
 * @author lmiky
 * @date 2014-1-26
 */
public class DateConverter extends DateTimeConverter {

	public DateConverter() {
	}

	public DateConverter(Object defaultValue) {
		super(defaultValue);
	}

	/* (non-Javadoc)
	 * @see org.apache.commons.beanutils.converters.AbstractConverter#getDefaultType()
	 */
	@SuppressWarnings("rawtypes")
	protected Class getDefaultType() {
		return Date.class;
	}

	/*
	 * (non-Javadoc)
	 * @see org.apache.commons.beanutils.converters.DateTimeConverter#convertToType(java.lang.Class, java.lang.Object)
	 */
	@SuppressWarnings("rawtypes")
	@Override
	protected Object convertToType(Class arg0, Object arg1) throws Exception {
		if (arg1 == null) {
			return null;
		}
		String value = arg1.toString().trim();
		if (value.length() == 0) {
			return null;
		}
		return super.convertToType(arg0, arg1);
	}
}


發佈了119 篇原創文章 · 獲贊 21 · 訪問量 101萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章