Wicket DropDownChoice в ListView, метод get не определен - PullRequest
1 голос
/ 26 марта 2012

Кто-нибудь может мне сказать, почему этот источник

List<Data> datas = ~getData();
PropertyListView<Data> listView = 
new PropertyListView<Data>("listView", new PropertyModel<List<Data>>(this, "datas")){

    private static final long serialVersionUID = 1L;

    @Override
    protected void populateItem(final ListItem<Data> item) {
        Data data = item.getModelObject();
        item.add(new MultiLineLabel("textLabel", data.getText());

        @SuppressWarnings("unchecked")
        ArrayList<DataParam> params = (ArrayList<DataParam>) ~getParamsForData(data);

        DropDownChoice<DataParam> dropDownChoice = 
            new DropDownChoice<DataParam>("choiceSelector", new Model<ArrayList<DataParam>>(params), new ChoiceRenderer<Object>("key", "value")){
            private static final long serialVersionUID = 1L;

            @Override
            protected boolean wantOnSelectionChangedNotifications(){
                return true;
            }

            @Override
            protected void onSelectionChanged(DataParam newSelection) {
                super.onSelectionChanged(newSelection);
            }

        };
        item.add(dropDownChoice);                   

    }
};


public static final class DataParam implements Serializable{
    private String key;
    private String value;
    public DataParam(String key, String value){ this.key=key; this.value=value;}
    public String getKey() { return key; }
    public void setKey(String key) { this.key = key; }
    public String getValue() { return value; }
    public void setValue(String value) { this.value = value; }
}

выдает это исключение

WicketMessage: No get method defined for class: 
class Data expression: choiceSelector
Root cause:
org.apache.wicket.WicketRuntimeException: 
No get method defined for class: class Data expression: choiceSelector

?(ищите метод get для ID компонента калитки choiceSelector в классе данных?!) Я даже не понимаю

1 Ответ

5 голосов
/ 26 марта 2012

Wicket ищет модель для чтения и сохранения по выбору, сделанному пользователем (а также по изначально выбранному значению).

Поскольку вы используете конструктор DDC без модели, wicketищет в родительском DDC (элементе) CompoundPropertyModel и использует wicket: id DDC в качестве выражения.Следовательно, вы получаете «choiceSelectecor».

Вам придется либо использовать wicket: id для математической структуры вашего класса данных, либо построить DDC с моделью для этого.

Bert

...