enum型のConverter

国際化に対応するためプロパティファイルを参照するConverterを書いてます。

package net.nagaseyasuhito.sandbox.converter;

import java.util.Locale;

import org.apache.wicket.Application;
import org.apache.wicket.Component;
import org.apache.wicket.util.convert.converters.AbstractConverter;

public class EnumerationConverter extends AbstractConverter {
	private static final long serialVersionUID = 1L;

	private Class<? extends Enum<?>> clazz;

	public EnumerationConverter(Class<? extends Enum<?>> clazz) {
		this.clazz = clazz;
	}

	@Override
	public Object convertToObject(String value, Locale locale) {
		return null;
	}

	@Override
	public String convertToString(Object value, Locale locale) {
		return Application.get().getResourceSettings().getLocalizer().getString(this.clazz.getName() + "." + value, (Component) null, (String) null);
	}

	@Override
	protected Class<? extends Enum<?>> getTargetType() {
		return this.clazz;
	}
}

enum型がこんな場合

package net.nagaseyasuhito.sandbox.enumeration;

public enum Role {
	ADMINISTRATOR,
	GUEST,
	MANAGER,
	USER,
	;
}

プロパティファイルには、

net.nagaseyasuhito.sandbox.enumeration.Role.ADMINISTRATOR = 管理者
net.nagaseyasuhito.sandbox.enumeration.Role.MANAGER = マネージャー
net.nagaseyasuhito.sandbox.enumeration.Role.USER = ユーザー
net.nagaseyasuhito.sandbox.enumeration.Role.GUEST = ゲスト

こう書きます。