tutorial google example descargar deploy java gwt

java - google - gwt tutorial



¿Cómo localizar valores de enumeración en el código del cliente GWT? (3)

Logré resolver el problema usando la interfaz ConstantsWithLookup de GWT. Aquí está la solución:

MyType.java

public enum MyType { FIRST_TYPE, SECOND_TYPE, THIRD_TYPE; private final MyConstantsWithLookup constants = GWT.create(MyConstantsWithLookup.class) public String getTitle() { return this.constants.getString(this.name()); } }

MyConstantsWithLookup.java

public interface MyConstantsWithLookup extends ConstantsWithLookup { String FIRST_TYPE(); String SECOND_TYPE(); String THIRD_TYPE(); }

MyConstantsWithLookup.properties

FIRST_TYPE = first SECOND_TYPE = second THIRD_TYPE = third

Estoy usando una clase de enumeración en el código de mi cliente GWT para definir un conjunto de tipos.

public enum MyType { FIRST_TYPE("first"), SECOND_TYPE("second"), THIRD_TYPE("third"); private String title; private MyType(String title) { this.title = title; } public String getTitle() { return this.title; } }

¿Cómo es posible localizar los valores de enumeración para traducirlos a diferentes idiomas? El campo del title no es tan importante y podría eliminarse si esto ayuda a resolver el problema.

Conozco el enfoque de ResourceBundle de Java, pero eso no funciona en el código de cliente de GWT.


Me gustaría agregar a la respuesta de @thommyslaw que en algunos casos es posible que tenga que pasar los Enums a través del cable. Me refiero a hacerlos serializables. En tales casos, poner GWT.create () dentro del Enum no funcionará. Aquí es donde algún tipo de clase de glosario Singleton será útil, como:

public class LEGlossary { private static LEGlossary instance=null; private static final LocalizationEnum localConstants=GWT.create(LocalizationEnum.class); private LEGlossary(){ } public static LEGlossary instance(){ if(instance==null){ instance=new LEGlossary(); } return instance; } public String localizedValue(Enum<?> value){ return localConstants.getString(value.name()); } }

Donde LocalizationEnum en mi caso extiende la interfaz ConstantsWithLookup . De esta manera, aísla el código de localización en el cliente y deja el Enum libre para pasar por el cable.