The value on model are on ProcessingStatusType instance. Use
((ProcessingStatusType)model.getObject()).getValue() to access the value
REJEC


On Thu, Sep 10, 2009 at 12:39 PM, cmoulliard <[email protected]> wrote:

>
> 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: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to