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

Reply via email to