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;
    }

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to