от
Очень плохо знаком с Wicket, но имеет очень простую Java. Я не понимаю, как «результат» не используется, как я использовал его в функции AjaxButton Quickfix говорит, чтобы обеспечить получение и установщик, который я сделал (удалил сейчас), но все еще ничего не произошло, когда я нажимаю кнопку ОК CalcPage.java:
public class CalcPage extends WebPage{
    private int num;
    private int result; // error:The value of the field CalcPage.result is not used
    private Label r;

    public CalcPage() {
        Form f = new Form("f");
        add(f);
        f.add(new TextField("num", new PropertyModel(this, "num")));
        AjaxButton ok = new AjaxButton("ok") {
            @Override
            protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                result = 2 * num;
                target.add(r);
            }
            @Override
            protected void onError(AjaxRequestTarget target, Form<?> form) {

            }
        };
        f.add(ok);
        r = new Label("r", new PropertyModel(this, "result"));
        add(r);
    }
}
CalcPage.html

    
        <meta charset="utf

Надеюсь (согласно книге «Наслаждаемся веб-разработкой с Wicket») удвоить ввод, но когда я нажимаю «ОК», ничего не происходит.

Также в коде я получаю ошибку компиляции с @Override, как только это будет удалено, я могу скомпилировать и загрузить веб-страницу. Они связаны?

Wicket Ajax Debug Информация об окне:
ИНФОРМАЦИЯ: фокус удален из

ИНФОРМАЦИЯ: фокус установлен на

ИНФОРМАЦИЯ: фокус удален из

ИНФОРМАЦИЯ: фокус установлен на wicketDebugLink

ИНФОРМАЦИЯ: фокус удален из wicketDebugLink

ИНФОРМАЦИЯ: фокус установлен на ok2

ИНФОРМАЦИЯ: Получен ответ Ajax (69 символов)

ИНФОРМАЦИЯ:


ИНФОРМАЦИЯ: Ответ обработан успешно.

ИНФОРМАЦИЯ: перефокусировать последний выделенный компонент не нужно / разрешено

ETA Я изменил с приватного на публичный, и эта ошибка исчезла, но нажатие кнопки «ОК» все еще не работает, и появилась новая ошибка:
Метод onSubmit (AjaxRequestTarget, Form) из типа new AjaxButton () {} никогда не используется локально
    

        

Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.

2 Ответы

0 голосов
от
Вам нужно позвонить
r.setOutputMarkupId(true)
, если вы хотите обновить компонент через Ajax. 1) если javac (или ваша IDE) говорит, что
@Override
ничего не переопределяет, то, скорее всего, у вас где-то есть опечатка, и вам нужно это исправить, то есть правильно переопределить метод из super 2) никогда не оставляйте
#onError()
пустым. Как минимум добавьте в него некоторые базовые записи, чтобы уведомить вас об ошибке проверки. Возможно,
#onSubmit()
вообще не вызывается. Лучше всего иметь панель обратной связи на странице, и вы должны обновить ее в
#onError()
-
target.add(feedbackPanel)
3) Проверьте браузер Dev Tools Console на наличие ошибок JavaScript. Я ожидаю, что Wicket будет жаловаться, что не может найти элемент HTML с идентификатором
rXY
(где
XY
- число) из-за отсутствия
r.setOutputMarkupId(true)
    
0 голосов
от
В 8-й версии калитки нет параметра «форма», поэтому его можно удалить: новый код
AjaxButton ok = new AjaxButton("ok") {

        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            result= 2*num;
            target.add(r);
        }
    
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...