Interesting. The SimpleSelection can be used on any DropDownChoice, this
is nice. I extended DropDownChoice for all the cases where I want to
specify the choices directly:
public static class SimpleDropDownChoice extends DropDownChoice {
private static class Choice {
private String label;
private Object value;
public Choice(String choiceLabel, Object choiceValue) {
label = choiceLabel;
value = choiceValue;
}
public String getLabel() {
return label;
}
public Object getValue() {
return value;
}
}
public SimpleDropDownChoice(String id, IModel model) {
this(id);
setModel(model);
}
public SimpleDropDownChoice(String id) {
super(id);
setChoiceRenderer(new IChoiceRenderer() {
public String getDisplayValue(Object object) {
Choice e = (Choice) object;
return e.getLabel();
}
public String getIdValue(Object object, int index) {
return String.valueOf(index);
}
});
setChoices(new ArrayList());
}
public SimpleDropDownChoice addChoice(String label, Object value) {
List choices = getChoices();
choices.add(new Choice(label, value));
setChoices(choices);
return this;
}
}
Usage:
SimpleDropDownChoice c = new SimpleDropDownChoice("gender");
c.addChoice("Male", new Integer(1));
c.addChoice("Female", new Integer(2));
c.addChoice("Unisex", new Integer(3));
Timo
Matej Knopp schrieb:
> It's doable, but you have to write your own choice renderer.
> I've made a SimpleSelection class that might help you. Usage is
>
> SimpleSelectionItem items[] = {
> new SimpleSelectionItem(1, "Male"),
> new SimpleSelectionItem(2, "Female"),
> new SimpleSelectionItem(4, "Unisex")
> };
>
> SimpleSelection selection = new SimpleSelection(items);
>
> add(new DropDownChoice("gender",
> new PropertyModel(this, "gender"),
> selection.getItemsModel(),
> selection.getChoiceRenderer());
>
> void setGender(int) {
> ...
> }
>
> int getGender() {
> ...
> }
>
> -Matej
>
> Johan Compagner wrote:
>> that is a problem. Because currently the Choice/ChoiceRender solutions
>> require
>> a one<->one relation ship between whats in the list and whats in the
>> model.
>> if you want to map that then the fastest way that i can think of right
>> now is to use
>> a model that sits between it. That maps CategoryVO <-> int back and
>> forward.
>>
>> Why do you work with ints in the model objects? Why not just full
>> blown java objects?
>>
>> johan
>>
>>
>> On 6/2/06, *Ralf Ebert* <[EMAIL PROTECTED]
>> <mailto:[EMAIL PROTECTED]>> wrote:
>>
>> Hi,
>>
>> quite often I have the problem that my model objects (which are bound
>> using compound property models) contain a field like categoryId (as
>> int), but when building pages, I would like to use objects like
>> CategoryVO. Simplest example is choosing from a list, the
>> dropdownchoices would be a List<CategoryVO> while the model object
>> itself would be an simple integer. I'm looking for an elegant way to
>> handle these things in a model based way. I would like to throw in a
>> little class which allows me to implement a mapping between both
>> types
>> (id -> object, object -> id, a bit like a converter). I couldn't find
>> an elegant way to do things like these, is there some best practice
>> for handling such cases?
>>
>> thx,
>> Ralf
>>
>>
>> -------------------------------------------------------
>> All the advantages of Linux Managed Hosting--Without the Cost and
>> Risk!
>> Fully trained technicians. The highest number of Red Hat
>> certifications in
>> the hosting industry. Fanatical Support. Click to learn more
>>
>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
>>
>> <http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642>
>>
>> _______________________________________________
>> Wicket-user mailing list
>> [email protected]
>> <mailto:[email protected]>
>> https://lists.sourceforge.net/lists/listinfo/wicket-user
>>
>>
>
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user