Изменение текстового поля между включенным и отключенным

У меня есть 2 переключателя и 1 TextField, и теперь я хочу переключаться между включенным и отключенным TextField. Если выбрано radioFindText, TextField должен быть включен, в противном случае он должен быть отключен. Я пытался использовать такой код, но он не работает, и у меня заканчиваются возможные решения. Кажется, что метод onSelectionChanged никогда не вызывается, почему?

РЕДАКТИРОВАТЬ Хорошо, я наконец нашел решение, и, возможно, оно очевидно для людей, которые какое-то время работают в калитке, но для моего первого проекта мне было трудно его решить. Вот рабочий код.

    searchedText.setOutputMarkupId(true);
    RadioGroup group = new RadioGroup("group", selected);
    group.setOutputMarkupId(true);
    Radio radioErrors = new Radio("errors", new Model<String>("ERRORS"));
    Radio radioFindText = new Radio("text", new Model<String>("Find text"));
    group.add(radioFindText.add(new AjaxEventBehavior("onchange") {
        @Override
        protected void onEvent(AjaxRequestTarget art) {
            searchedText.setEnabled(true);
            art.add(searchedText);
        }
    }));
    group.add(radioErrors.add(new AjaxEventBehavior(("onchange")) {
        @Override
        protected void onEvent(AjaxRequestTarget art) {
            searchedText.setEnabled(false);
            art.add(searchedText);
        }
    }));
    group.add(searchedText);
    form.add(group);

person wawek    schedule 23.08.2013    source источник


Ответы (1)


Прошло много времени с тех пор, как я закодировал калитку, но, возможно, вы могли бы использовать это:

radioGroup.add(new AjaxFormSubmitBehavior("onchange") {public void onSubmit(AjaxRequestTarget target) {...}}

я думаю, вам нужно это, чтобы получать "onchange" - уведомления

person JohnnyAW    schedule 23.08.2013
comment
Спасибо за ваш ответ, но я не хочу отправлять, а затем изменять TextField, но я хочу сделать это немедленно, поэтому, когда этот переключатель выбран, текстовое поле автоматически включается. - person wawek; 23.08.2013
comment
ты пробовал? я бы на самом деле ожидал, что вы получите это уведомление сразу после того, как пользователь изменит значение... Другое дело, что вы на самом деле получите: group.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(1)));? я имею в виду, вы должны получить какое-то уведомление от него? - person JohnnyAW; 23.08.2013
comment
Да пробовал, ничего не получилось. Я использовал это самообновление, потому что думал, что оно обновит и обновит выбор в радио. - person wawek; 23.08.2013
comment
я нашел это: apache -wicket.1842946.n4.nabble.com/ та же проблема, что и у вас. ему удалось ее решить - person JohnnyAW; 23.08.2013
comment
Ну, я нашел это раньше и уже пробовал, но это все еще не работает для меня. Кажется, что я все время что-то упускаю, но я не могу найти, что это может быть. Я пробовал все возможные решения по этой ссылке, которую вы вставили сюда, и ... ничего. Может быть, это потому, что эта тема из 2008 года, поэтому, вероятно, некоторые вещи изменились. - person wawek; 23.08.2013
comment
извините, но я не могу вам помочь, у меня были трудные времена с калиткой около 1 года назад :) - person JohnnyAW; 23.08.2013