Thks for all. With the following syntax :
add(new DropDownChoice("requestStatus", Arrays.asList(ProcessingStatusType.values()), new IChoiceRenderer() { public Object getDisplayValue(Object status) { return ((ProcessingStatusType) status).getDescription(); } public String getIdValue(Object status, int index) { return ((ProcessingStatusType) status).getValue(); }})); html generated : <select wicket:id="requestStatus" name="requestStatus"> <option selected="selected" value="">Choose One</option> <option value="NEW">New</option> <option value="ACCPT">Accepted</option> <option value="VALID">Validated</option> <option value="TRFRM">Transformed</option> <option value="TRFRD">Transferred</option> <option value="REJEC">Rejected</option> <option value="FAIL">Failed</option> </select> Everything is ok except that the value receives by my RequestFormModel after the post is equal to the description (e.g : REJECTED instead of REJEC) and not the value !!!! Here is what I have in html : Matthias Keller wrote: > > Hi > > Close but not quite. getDisplayValue gets the catual ELEMENT of the list > - so objDispl is of type ProcessingStatusType already. > So in your case it would be something like: > >> public Object getDisplayValue(Object objDispl) { >> return ((ProcessingStatusType) objDispl).getDescription(); >> } >> >> public String getIdValue(Object obj, int index) { >> return obj.toString(); >> // or if you prefer to have the value of your enum in the HTML code: >> // return ((ProcessingStatusType) objDispl).getValue() >> } > Which one of the getIdValue implementations you chose doesn't matter for > wicket, it just needs an ID for every entry which is unique. > In your case you could even return String.valueOf(index) as your > backing List of the Enums will not ever change while deployed. > > Be careful though with using index, there are circumstances where no > useful index will be provided (always -1) - That happens when you > externally change the selected value of the DropDownChoice. > > you could also just use or extend ChoiceRenderer which might already do > what you want... > For example > new ChoiceRenderer("description", "value") > > Matt > > cmoulliard wrote: >> You mean create something like this : >> >> add(new DropDownChoice("requestStatus", >> Arrays.asList(ProcessingStatusType.values()), new IChoiceRenderer() { >> >> public Object getDisplayValue(Object objDispl) { >> return ProcessingStatusType.valueOf((String) >> objDispl).getDescription(); >> } >> >> public String getIdValue(Object obj, int index) { >> return obj.toString(); >> }})); >> >> I have an error during initialisation : >> >> WicketMessage: Exception in rendering component: [MarkupContainer >> [Component >> id = requestStatus]] >> >> Root cause: >> >> java.lang.ClassCastException: >> com.xpectis.x3s.model.usertype.ProcessingStatusType >> at >> com.xpectis.x3s.fundbox.web.form.RequestForm$1.getDisplayValue(RequestForm.java:38) >> >> I suppose that what I defined in getDisplayValue is not correct ? >> >> Matthias Keller wrote: >> >>> Hi Charles >>> >>> No problem. Just make an IChoiceRenderer which calls getDescription for >>> the display value and getValue for the id. >>> >>> Matt >>> >>> Charles Moulliard wrote: >>> >>>> Hi, >>>> >>>> I would like to know if I can create a DropDownChoice where the value >>>> to >>>> be >>>> displayed in the drop down list corresponds to the description of my >>>> enumeration (e.g. Accepted) while the value to be returned is the value >>>> defined in the enumeration (e.g: ACCPT) ? >>>> >>>> public enum ProcessingStatusType { >>>> NEW ("NEW", "New"), >>>> ACCEPTED ("ACCPT", "Accepted"), >>>> VALIDATED ("VALID", "Validated"), >>>> TRANSFORMED("TRFRM", "Transformed"), >>>> TRANSFERRED("TRFRD", "Transferred"), >>>> REJECTED("REJEC", "Rejected"), >>>> FAILED("FAIL", "Failed"); >>>> >>>> private final String value; >>>> private final String description; >>>> >>>> ProcessingStatusType( String value, String description ) { >>>> this.value = value; >>>> this.description = description; >>>> } >>>> >>>> >>>> > > > ----- Charles Moulliard SOA Architect My Blog : http://cmoulliard.blogspot.com/ http://cmoulliard.blogspot.com/ -- View this message in context: http://www.nabble.com/DropDownChoice-with-Java-Enum-tp25382303p25385339.html Sent from the Wicket - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org