ok, I just found it: there is already a converter for enums, I missed somehow: com.opensymphony.xwork2.util.EnumTypeConverter Piotr
2008/9/18 Piotr Matkowski <[EMAIL PROTECTED]> > Hi, > I was wondering, is there some easy way (annotation, config) to perform > type conversion on Enum types? > I noticed that struts does not handle Enum types by default, which is not > what I expected. > > Lets say we have an Enum like that: > > public enum Fruit { ORANGE, APPLE; } > > and Action with field and setter: > > private Fruit fruit; > public void setFruit(Fruit fruit) { this.fruit = fruit; } > > I want to submit String ORANGE from html form and get Fruit.ORANGE object > in my Action after population. > I wrote my own type converter, here's the code: > > public class EnumConverter extends StrutsTypeConverter { > public Object convertFromString(Map context, String[] values, Class > toClass) { > try { > return toClass.getMethod("valueOf", > String.class).invoke(toClass, values[0]); > } catch (Exception e) { > throw new TypeConversionException(e); > } > } > public String convertToString(Map context, Object o) { > return ((Enum) o).name(); > } > } > > It works for me, but the thing is, the code is quite ugly (i mean the java > reflection part). > Does someone know a better way to do that? > Maybe Enums should be handled by struts by default? Why they aren't > handled? > Any comments appreciated, > regards > Piotr >