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]