Its often useful to use an enum as the model for a dropdown (or radio group) in Wicket, but not immediately obvious how to handle the display of the values. Lets say I have an enum with three colors:
[sourcecode language=”java”]
enum Color { RED, GREEN, BLUE };
[/sourcecode]
I can hook this up to a dropdown with the following code:
[sourcecode language=”html”]
[/sourcecode]
[sourcecode language=”java”]
enum Color { RED, GREEN, BLUE };
private Color color = Color.GREEN;
add(new DropDownChoice
[/sourcecode]
However, that would display “RED”, “GREEN”, “BLUE”. I probably don’t want the dropdown to use the default toString() form of my enum declarations, but rather I want it to load translatable texts from property files.
To do this, I can use Wicket’s EnumChoiceRenderer as follows:
[sourcecode language=”html”]
[/sourcecode]
[sourcecode language=”java”]
enum Color { RED, GREEN, BLUE };
private Color color = Color.GREEN;
add(new DropDownChoice
[/sourcecode]
[sourcecode language=”java”]
Color.RED=Red
Color.GREEN=Green
Color.BLUE=Blue
[/sourcecode]
Now I get what I wanted – a dropdown displaying “Red”, “Green” and “Blue”.