最代码广告位
首页>分享>spring mvc-showcase,便于学习springmvc,maven工程,建议使用谷歌浏览器>/spring-mvc-showcase/src/main/java/org/springframework/samples/mvc/convert/MaskFormatAnnotationFormatterFactory.java
package org.springframework.samples.mvc.convert;

import java.text.ParseException;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;

import org.springframework.format.AnnotationFormatterFactory;
import org.springframework.format.Formatter;
import org.springframework.format.Parser;
import org.springframework.format.Printer;

public class MaskFormatAnnotationFormatterFactory implements AnnotationFormatterFactory<MaskFormat> {

	public Set<Class<?>> getFieldTypes() {
		Set<Class<?>> fieldTypes = new HashSet<Class<?>>(1, 1);
		fieldTypes.add(String.class);
		return fieldTypes;
	}

	public Parser<?> getParser(MaskFormat annotation, Class<?> fieldType) {
		return new MaskFormatter(annotation.value());
	}

	public Printer<?> getPrinter(MaskFormat annotation, Class<?> fieldType) {
		return new MaskFormatter(annotation.value());
	}
	
	private static class MaskFormatter implements Formatter<String> {

		private javax.swing.text.MaskFormatter delegate;

		public MaskFormatter(String mask) {
			try {
				this.delegate = new javax.swing.text.MaskFormatter(mask);
				this.delegate.setValueContainsLiteralCharacters(false);
			} catch (ParseException e) {
				throw new IllegalStateException("Mask could not be parsed " + mask, e);
			}
		}

		public String print(String object, Locale locale) {
			try {
				return delegate.valueToString(object);
			} catch (ParseException e) {
				throw new IllegalArgumentException("Unable to print using mask " + delegate.getMask(), e);
			}
		}

		public String parse(String text, Locale locale) throws ParseException {
			return (String) delegate.stringToValue(text);
		}

	}

}
最近下载更多
truenoakina123 LV32019年10月17日
星星星星星星
其他昵称 LV102018年8月31日
月亮月亮星星星星
chinafjfzlj LV312017年9月7日
太阳月亮月亮月亮星星星星星星
shifukuan LV102017年9月1日
月亮月亮星星星星
sevenvsky LV272016年12月29日
太阳月亮月亮星星星星星星
huangguoqiang LV12016年8月19日
星星
huachen LV22016年5月29日
星星星星
luoshaoke LV12016年4月14日
星星
jefferyqjy LV12015年12月13日
星星
LetItRain LV12015年9月5日
星星
最近浏览更多
ppppppp0 LV55月8日
月亮星星
蓝冰蓝冰蓝冰 LV14月26日
星星
dami5284月12日
暂无贡献等级
许拜把 LV53月31日
月亮星星
chucckiec LV63月10日
月亮星星星星
243846758 LV61月10日
月亮星星星星
152162355 LV21月5日
星星星星
最代码_码鑫源 LV52019年12月27日
月亮星星
liumeiliumei LV12019年12月26日
星星
khhjgjhv LV92019年12月2日
月亮月亮星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友