Wicket: Как дважды изменить видимость компонента ProgressBar во время ответа Ajax

#jquery #ajax #wicket

#jquery #ajax #wicket

Вопрос:

В моей форме у меня есть компонент ProgressBar из проекта Wiquery (http://code.google.com/p/wiquery /) и видимость ProgressBar в начале имеет значение false.

У меня также есть AjaxButton в форме, и мне нужно сделать несколько вещей в его методе onSubmit ():

  1. Во-первых, мне нужно показать ProgressBar, значение которого равно 0 (для параметра visible установите значение true).
  2. Во-вторых, мне нужно выполнить аннотацию страницы, что займет несколько секунд.
  3. Наконец, мне нужно обновить ProgressBar со значения 0 до значения 100 во время процесса аннотирования, и мне нужно скрыть компонент ProgressBar в конце процесса аннотирования.

Ниже приведен код, который мне нужно улучшить. Я также пытался использовать компонент UploadProgressBar, но появляется сообщение «Загрузка начинается …», в котором здесь нет необходимости. Есть ли способ изменить это сообщение?

 progressBar = new ProgressBar("progress");
progressBar.setValue(0);
progressBar.setOutputMarkupId(true);
progressBar.setVisible(false);
form.add(progressBar);


semAnnButton = new AjaxButton("semAnnButton"){

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target,
                Form<?> form) {

            progressBar.setVisible(true);
            target.addComponent(progressBar);
            performAnnotation(webPageURL);
            progressBar.increment(target, 100);


        }};
    semAnnButton.setOutputMarkupId(true);
    semAnnButton.setOutputMarkupPlaceholderTag(true);
    semAnnButton.setVisible(true);
    form.add(semAnnButton);
  

Ответ №1:

Проблема, с которой вы сталкиваетесь, заключается в том, что onSubmit метод будет запущен до возврата клиенту, к этому времени вы установите индикатор выполнения на 100 .

Я не думаю, что индикатор выполнения — это то, что вам нужно для этого, нет шагов, на которых вы можете сказать, что это выполнено на x%. Он либо завершен, либо не завершен, как таковой, индикатор выполнения не может отображаться с прогрессом. Я бы посоветовал использовать индикатор ( AjaxIndicatorAppender ).

Надеюсь, это поможет.