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 = ゲスト
こう書きます。