You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by soulspirit <no...@at.uboot.com> on 2007/08/16 16:42:50 UTC

ChoiceRenderer issue

Hi everyone,

I use this codesnippet for the <select wicket:id="gender"> tag in my
markupfile:

genderChoice = new DropDownChoice("gender", new PropertyModel(user,
"gender", Short.class), Arrays.asList(genders), new ChoiceRenderer("key",
"value"));

when I submit the form i get following error:
SelectOption[] genders = new SelectOption[]{new SelectOption("male", "1"),
new SelectOption("female", "2")};
wicket.util.convert.ConversionException: Cannot parse
'uboot.util.SelectOption@13577ca' using format java.text.DecimalFormat@674dc
     at
wicket.util.convert.converters.AbstractConverter.newConversionException(AbstractConverter.java:72)
     at
wicket.util.convert.converters.AbstractConverter.parse(AbstractConverter.java:52)
     at
wicket.util.convert.converters.AbstractNumberConverter.parse(AbstractNumberConverter.java:69)
     at
wicket.util.convert.converters.ShortConverter.convert(ShortConverter.java:44)
     at wicket.util.convert.Converter.convert(Converter.java:207)
     at
wicket.util.lang.PropertyResolver$MethodGetAndSet.setValue(PropertyResolver.java:828)
     at
wicket.util.lang.PropertyResolver$ObjectAndGetSetter.setValue(PropertyResolver.java:447)
     at
wicket.util.lang.PropertyResolver.setValue(PropertyResolver.java:136)
     at
wicket.model.AbstractPropertyModel.onSetObject(AbstractPropertyModel.java:182)
     at
wicket.model.AbstractDetachableModel.setObject(AbstractDetachableModel.java:131)
     at wicket.Component.setModelObject(Component.java:2035)
.....


The SelectOption class looks like this:
public class SelectOption implements Serializable {
    public SelectOption(String key, Short value) {
        this.key = key;
        this.value = value;
    }

    //getters and setters here.....

    private String key;
    private Short value;
}


I folowed this example:
http://cwiki.apache.org/WICKET/dropdownchoice-examples.html#DropDownChoiceExamples-Customizingthedisplayofchoices.


But things arnt working. Wicket doesnt pass the "value"-property to my
user-object, but the whole SelectOption-object. Ive written a workaround
(casting the passed Object to a SelectOption and reading the value with the
getter) but this behavior seems strange to me...
-- 
View this message in context: http://www.nabble.com/ChoiceRenderer-issue-tf4280071.html#a12182692
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: ChoiceRenderer issue

Posted by Igor Vaynberg <ig...@gmail.com>.
dropdown expects choice objects of type Short, you are giving it
SelectOption, it has trouble converting SelectOption to a Short.

three ways to do this. make your model expect a SelectOption object instead
of a short. ie add
User.setGender(SelectOption o) { gender=o.getGender(); }

two make your model convert on the fly
new ConvertingModel(new PropertyModel(user, "gender"));

three work with shorts and make your choice renderer translate the short
into the string. search the list for this, ive given this example before.

-igor


On 8/16/07, soulspirit <no...@at.uboot.com> wrote:
>
>
> Hi everyone,
>
> I use this codesnippet for the <select wicket:id="gender"> tag in my
> markupfile:
>
> genderChoice = new DropDownChoice("gender", new PropertyModel(user,
> "gender", Short.class), Arrays.asList(genders), new ChoiceRenderer("key",
> "value"));
>
> when I submit the form i get following error:
> SelectOption[] genders = new SelectOption[]{new SelectOption("male", "1"),
> new SelectOption("female", "2")};
> wicket.util.convert.ConversionException: Cannot parse
> 'uboot.util.SelectOption@13577ca' using format
> java.text.DecimalFormat@674dc
>      at
> wicket.util.convert.converters.AbstractConverter.newConversionException(
> AbstractConverter.java:72)
>      at
> wicket.util.convert.converters.AbstractConverter.parse(
> AbstractConverter.java:52)
>      at
> wicket.util.convert.converters.AbstractNumberConverter.parse(
> AbstractNumberConverter.java:69)
>      at
> wicket.util.convert.converters.ShortConverter.convert(ShortConverter.java
> :44)
>      at wicket.util.convert.Converter.convert(Converter.java:207)
>      at
> wicket.util.lang.PropertyResolver$MethodGetAndSet.setValue(
> PropertyResolver.java:828)
>      at
> wicket.util.lang.PropertyResolver$ObjectAndGetSetter.setValue(
> PropertyResolver.java:447)
>      at
> wicket.util.lang.PropertyResolver.setValue(PropertyResolver.java:136)
>      at
> wicket.model.AbstractPropertyModel.onSetObject(AbstractPropertyModel.java
> :182)
>      at
> wicket.model.AbstractDetachableModel.setObject(
> AbstractDetachableModel.java:131)
>      at wicket.Component.setModelObject(Component.java:2035)
> .....
>
>
> The SelectOption class looks like this:
> public class SelectOption implements Serializable {
>     public SelectOption(String key, Short value) {
>         this.key = key;
>         this.value = value;
>     }
>
>     //getters and setters here.....
>
>     private String key;
>     private Short value;
> }
>
>
> I folowed this example:
>
> http://cwiki.apache.org/WICKET/dropdownchoice-examples.html#DropDownChoiceExamples-Customizingthedisplayofchoices
> .
>
>
> But things arnt working. Wicket doesnt pass the "value"-property to my
> user-object, but the whole SelectOption-object. Ive written a workaround
> (casting the passed Object to a SelectOption and reading the value with
> the
> getter) but this behavior seems strange to me...
> --
> View this message in context:
> http://www.nabble.com/ChoiceRenderer-issue-tf4280071.html#a12182692
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>