Very simple:  add(new
DropDownChoice("requestStatus",Arrays.asList(ProcessingStatusType.values()),
... ));
the constructor javadoc:
http://static.ddpoker.com/javadoc/wicket/1.4-m2/org/apache/wicket/markup/html/form/DropDownChoice.html#DropDownChoice%28java.lang.String,%20java.util.List,%20org.apache.wicket.markup.html.form.IChoiceRenderer%29
the super class contructor:
http://static.ddpoker.com/javadoc/wicket/1.4-m2/org/apache/wicket/markup/html/form/AbstractChoice.html#AbstractChoice%28java.lang.String,%20java.util.List,%20org.apache.wicket.markup.html.form.IChoiceRenderer%29
The second parameter (Arrays.asList(ProcessingStatusType.values())) are
"The collection of choices in the dropdown". Your model will receive to
setter an item from this list of choices.

On Fri, Sep 11, 2009 at 3:59 AM, cmoulliard <cmoulli...@gmail.com> wrote:

>
> If understand correctly, the value displayed in as value in the html
> options
> will not be used to set my requestStatus property in the model class
> "RequestFormModel" but use by the DropDownchoice to find the value to be
> setted (like key for hashmap, index for array, ...).
>
> In consequenc,e I have to change the code of my property setter inside my
> model to set the value (coming from the ENUM) :
>
>        public void setRequestType(String requestType) {
>                // Set requestType field with the value (and not the
> description) of the
> enum
>                this.requestType = ProcessingStatusType.valueOf( requestType
> ).getValue();
>         }
>
>
>
> Pedro Santos-6 wrote:
> >
> > 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 <cmoulli...@gmail.com>
> 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: users-unsubscr...@wicket.apache.org
> >> For additional commands, e-mail: users-h...@wicket.apache.org
> >>
> >>
> >
> >
>
>
> -----
> 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-tp25382303p25396006.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
>
>

Reply via email to