Модель калитки - PullRequest
       37

Модель калитки

0 голосов
/ 07 декабря 2011

Я все еще не получаю модели калитки. Что я здесь не так делаю? Аргумент filterString по-прежнему "", когда метод ссылки onClick печатает его.

class X extends Panel {
    String filterString;
    TextField filterTextField;
    AjaxLink filterLink;

   X(){
       filterString = new String("");
       filterTextField = new TextField<String>("filterTextField", new PropertyModel<String>(this, "filterString"));
       filterLink = new AjaxLink<Void>("filterLink"){
           private static final long serialVersionUID = 1L;
           @Override
           public void onClick(AjaxRequestTarget target) {              
               params.setFilterString(filterTextField.getModelObject());
               System.out.println("BLABLABLA " + filterTextField.getModelObject());
           }
       };
       //add stuff etc
    }
}

EDIT:

ОК, как сказал Юха, использование формы работает. Иногда я чувствую, что создание форм кажется излишним, но так как это, пожалуй, самая лучшая вещь в Wicket-y, это то, что я буду использовать здесь. Класс будет выглядеть примерно так:

public class X extends Panel {
    private static final long serialVersionUID = 1L;
    public X(String id) {
        super(id);
        add(new FilterForm("logEntryForm"));
    }

    public class FilterForm extends Form{
        private static final long serialVersionUID = 1L;
        private transient String text; //no need to serialize this
        public FilterForm(String id) {
            super(id);
            final TextField<String> contents = new TextField<String>("contents", new PropertyModel<String>(FilterForm.this, "text")); //textArea for user to enter the filter String
            add(contents);
            add(new AjaxButton("filterButton") {
                private static final long serialVersionUID = 1L;
                @Override
                protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                    //do stuff, in my case it was to send the text to the database for filtering out results
                }
            }); 
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

Замените AjaxLink на Form и AjaxButton или что-то, что имеет onSubmit() метод.AjaxLink не выполняет отправку, поэтому браузер не отправляет введенное значение на сервер.

0 голосов
/ 07 декабря 2011

В конструкторе кажется, что вы написали x() вместо X() (заглавная X)

...