Model Code:
// either use an enum type or add a choice utility element
public <TypeOfProperty> get<PropertyName>() { ... }
public void set<PropertyName>(<TypeOfProperty> value) { ... }

<select>
<select size="8">
<input type="radio">
<input type="checkbox">
<table>
Model Code:
// see above regarding enums, can also be an Iterable, Collection, etc
public <TypeOfProperty>[] get<PropertyName>() { ... }
public void set<PropertyName>(<TypeOfProperty>[] value) { ... }

<!-- ListMultipleChoice does not support empty
     selection once a selection was made -->
<select size="8" multiple="multiple">
// Palette allows to go back to empty selection though
new GeneratedBinding(this).addBindingInterceptor(new BindingInterceptor() {
    @Override
    public Component createSelect(final SelectHtmlElement e) {
        if (ListsAndChoicesConstants.asMultiselectPalette.equals(e.getWicketId())) {
            return new ModelPalette(e);
        }
        return super.createSelect(e);
    }
}).bind();
<input type="checkbox">
<table>