It could be left as is and use the display value as expected (i.e.
<input type="checkbox" id="ID_VALUE" value="DISPLAY_VALUE"  />).

Another option would be to have an identifier renderer:

public interface IChoiceRenderer extends IIdentifierRenderer
{
        Object getDisplayValue(Object object);
} 

public interface IIdentifierRenderer extends IClusterable
{
        String getIdValue(Object object, int index);
}

-----Original Message-----
From: Igor Vaynberg [mailto:[EMAIL PROTECTED] 
Sent: Friday, May 16, 2008 11:47 AM
To: users@wicket.apache.org
Subject: Re: IChoiceRenderer: RadioGroup CheckBoxMultipleChoice

if you use an ldm in choice/choicegroup then you should have instance
equality available since you will probably load the objects from the
same place, so during request processing they are consistent.

as far as choicerenderer, i dont think thats a good idea, what do you do
with getdisplayvalue()?

-igor

On Fri, May 16, 2008 at 8:35 AM, Hoover, William <[EMAIL PROTECTED]>
wrote:
> I agree, but there are some cases where it will not be possible to 
> implement equals/hashcode on the model object.
>
> I would be more of a proponent to have as much consistency across 
> components as possible- which would mean that ICoiceRenderer would be 
> available, but not enforced, in any component that needs to handle 
> choices (this is already the case for models ---> IModelComparator 
> Component#getModelComparator(...)).
>
> I'm not sure I understand what you mean by using a 
> LoadableDetachableModel to solve the issue. Could you elaborate?
>
> -----Original Message-----
> From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
> Sent: Friday, May 16, 2008 11:12 AM
> To: users@wicket.apache.org
> Subject: Re: IChoiceRenderer: RadioGroup CheckBoxMultipleChoice
>
> then use loadable detachable models that will ensure instance
equality.
> we can let the group take a comparator, but its yet another 
> complication. i see it as a reasonable enough requirement that objects

> properly implement equals and hashcode.
>
> -igor
>
> On Fri, May 16, 2008 at 7:58 AM, Hoover, William <[EMAIL PROTECTED]>
> wrote:
>> yes, that will work in my example, but what if MyObjectOption is not 
>> part of my namespace?
>>
>> -----Original Message-----
>> From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
>> Sent: Friday, May 16, 2008 10:14 AM
>> To: users@wicket.apache.org
>> Subject: Re: IChoiceRenderer: RadioGroup CheckBoxMultipleChoice
>>
>> why dont you just implement equals/hashcode on MyObjectOption???
>>
>> -igor
>>
>>
>> On Fri, May 16, 2008 at 5:14 AM, Hoover, William 
>> <[EMAIL PROTECTED]>
>> wrote:
>>> Here is an example of what I'm referring to:
>>>
>>> class MyObject {
>>>        private Long id;
>>>        private MyObjectOption myObjectOption;
>>>
>>>        public MyObject(final Long id){
>>>                setId(id);
>>>                ...
>>>        }
>>>        ...
>>> }
>>>
>>> class MyObjectOption {
>>>        private Long id;
>>>        private String name;
>>>
>>>        public MyObjectOption(final Long id){
>>>                setId(id);
>>>                ...
>>>        }
>>>        ...
>>> }
>>>
>>> // in the WebPage
>>> final MyObject myObject = new MyObject(1L); ...
>>> myObject.setMyObjectOption(new MyObjectOption(200L));
>>>
>>> final List<MyObjectOption> myObjectOptionList = new 
>>> ArrayList<MyObjectOption>(); myObjectOptionList.add(new 
>>> MyObjectOption(100L)); myObjectOptionList.add(new 
>>> MyObjectOption(200L)); myObjectOptionList.add(new 
>>> MyObjectOption(300L));
>>>
>>> final Form myForm = new Form("form-myobject", new 
>>> CompoundPropertyModel(myObject)); ...
>>> final RadioGroup group = new RadioGroup("myObjectOption"); 
>>> group.add(new ListView("div-myobject-options-view", myObjectList) {
>>>        protected final void populateItem(final ListItem item) {
>>>                final MyObjectOption myObjectOption = 
>>> (MyObjectOption)
>
>>> item.getModelObject();
>>>                item.add(new Label("label-myobject-option-name",
>>> myObjectOption.getName()));
>>>                item.add(new Radio("input-radio-myobject-option", new

>>> Model(myObjectOption)));
>>>        }
>>> });
>>> myForm.add(group);
>>> add(myForm);
>>>
>>>
>>> <form wicket:id="form-myobject">
>>>        <div wicket:id="myObjectOption">
>>>                <div wicket:id="div-myobject-options-view">
>>>                        <label
wicket:id="label-myobject-option-name">
>>>                                [MyObjectOption Name]
>>>                        </label>
>>>                        <input
wicket:id="input-radio-myobject-option"
>>> type="radio" />
>>>                </div>
>>>        </div>
>>> </form>
>>>
>>> In the example above myObjectOption would never be selected because 
>>> it
>>
>>> is not the same instance of the MyObjectOption that is in 
>>> myObjectOptionList (index 1) even though they share the same ID. If 
>>> an
>>
>>> IChoiceRenderer was provided to the RadioGroup the following could 
>>> accomplish the task of making the selection work:
>>>
>>> final IChoiceRenderer myObjectOptionRenderer = new ChoiceRenderer()
{
>>>        ...
>>>        public final String getIdValue(final Object object, final int
>>> index) {
>>>                final Object id = ((MyObjectOption) object).getId();
>>>                return (id != null) ? id.toString() :
>>> super.getIdValue(object, index);
>>>        }
>>>        ...
>>> };
>>>
>>> -----Original Message-----
>>> From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
>>> Sent: Thursday, May 15, 2008 7:16 PM
>>> To: users@wicket.apache.org
>>> Subject: Re: IChoiceRenderer: RadioGroup CheckBoxMultipleChoice
>>>
>>> On Thu, May 15, 2008 at 3:12 PM, Hoover, William 
>>> <[EMAIL PROTECTED]>
>>> wrote:
>>>> It's strange that that kind of functionality is provided when 
>>>> multiple
>>>
>>>> selections is needed (i.e. CheckBoxMultipleChoice), but it is not 
>>>> when
>>>
>>>> only one choice is needed (i.e. RadioGroup/CheckGroup).
>>>
>>> CheckGroup is a muti-selection component
>>>
>>>
>>>
>>>> It is an oddity
>>>> that other components that have choices (i.e. DropDownChoice, etc.)

>>>> provide a means to use an IChoiceRenderer, but some do not.
>>>
>>> the whole point of Radio/CheckGroup is to give the user more control

>>> then what IChoiceRenderer offers.
>>>
>>>> What if
>>>> someone is using a RadioGroup/CheckGroup that uses some form of a 
>>>> RepeatingView to generate the Radio/Check options dynamically? In 
>>>> the
>>
>>>> case where they need to make a selection using a separate choice 
>>>> instance than what is in the list, how would they accomplish that?
>>>> If
>>
>>>> they set the choice on the RadioGroup/CheckGroup model it will 
>>>> never
>
>>>> be selected because they are different instances, and because there

>>>> is
>>>
>>>> not IChoiceRenderer it is not possible to define an ID value to 
>>>> determine the equality of the two instances.
>>>
>>> Not really sure what you mean here. The selection is based on the 
>>> model object of Radio/Check, not the Radio/Check instance itself...
>>>
>>> -igor
>>>
>>>
>>>>
>>>> -----Original Message-----
>>>> From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
>>>> Sent: Thursday, May 15, 2008 5:50 PM
>>>> To: users@wicket.apache.org
>>>> Subject: Re: IChoiceRenderer: RadioGroup CheckBoxMultipleChoice
>>>>
>>>> well, the whole point of radio/check group is to allow user 
>>>> complete
>
>>>> control over markup. the whole point of choice renderer is to 
>>>> automate
>>>
>>>> markup generation, so there is just a big mismatch. eg i always use

>>>> radio/check group when using a choice renderer would be
> inconvenient.
>>>>
>>>> you can always roll your own subclass, i just dont think something 
>>>> like that would belong in core, its just one more parallel way of 
>>>> doing something.
>>>>
>>>> -igor
>>>>
>>>> On Thu, May 15, 2008 at 2:44 PM, Hoover, William 
>>>> <[EMAIL PROTECTED]>
>>>> wrote:
>>>>> yes... sorry CheckGroup is what I meant. It seems as though 
>>>>> RadioGroup/CheckGroup should also have the capability of using an 
>>>>> IChoiceRenderer as well, right? One reason I was thinking that is 
>>>>> if
>>
>>>>> someone has a model object instance A that is a different instance

>>>>> than any of the choices in the list, they can override the
>>>>> IChoiceRenderer#getIdValue(...) and provide the identifier. Even 
>>>>> though none of the choices are the same instance of A they can 
>>>>> still
>>
>>>>> determine equality for selection purposes using the ID value.
>>>>>
>>>>> -----Original Message-----
>>>>> From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
>>>>> Sent: Thursday, May 15, 2008 4:47 PM
>>>>> To: users@wicket.apache.org
>>>>> Subject: Re: IChoiceRenderer: RadioGroup CheckBoxMultipleChoice
>>>>>
>>>>> checkboxmultiplechoice uses ichoicerenderer afaik, did you mean 
>>>>> checkgroup?
>>>>>
>>>>> radiogroup/checkgroup work differently, they leave all text 
>>>>> generation
>>>>
>>>>> up to the user so no choice renderer is required.
>>>>>
>>>>> -igor
>>>>>
>>>>> On Thu, May 15, 2008 at 1:01 PM, Hoover, William 
>>>>> <[EMAIL PROTECTED]>
>>>>> wrote:
>>>>>> For consistency sake, wouldn't it be wise to use IChoiceRenderer 
>>>>>> for
>>>
>>>>>> RadioGroup and CheckBoxMultipleChoice? Seems like a natural 
>>>>>> solution
>>>
>>>>>> to override IChoiceRenderer#getIdValue(...) to infer IDs for 
>>>>>> selection
>>>>>
>>>>>> comparison the same way that it is being done in DropDownChoice.
>>>>>> Otherwise, how else can you use two different model object 
>>>>>> instances
>>>
>>>>>> that share the same ID to be selectable?
>>>>>>
>>>>>>
>>>>>> -----------------------------------------------------------------
>>>>>> -
>>>>>> -
>>>>>> -
>>>>>> - To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>
>>>>>>
>>>>>
>>>>> ------------------------------------------------------------------
>>>>> -
>>>>> -
>>>>> - To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------
>>>>> -
>>>>> -
>>>>> - To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>
>>>>>
>>>>
>>>> -------------------------------------------------------------------
>>>> -
>>>> - To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>>
>>>> -------------------------------------------------------------------
>>>> -
>>>> - To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>
>>> --------------------------------------------------------------------
>>> - To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>>> --------------------------------------------------------------------
>>> - To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to