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