Передача данных из Java-файла в AJAX - PullRequest
0 голосов
/ 01 июля 2018

У меня есть класс java, печатающий прогресс процесса как 1%, 2%, 3%. Теперь я хочу прочитать этот прогресс с помощью запросов AJAX и постоянно обновлять прогресс на веб-странице. Я не могу преобразовать Java-файл в сервлет, так как он используется Jasper как скриптлет.

Код скрипта:

public void afterDetailEval() throws JRScriptletException{
     count = (Integer) this.getVariableValue("count"); 
     out.println(count);
     Thread.sleep(200); 
}

Как я могу прочитать данные, напечатанные Java, из запроса AJAX?

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 02 июля 2018

Как создается ваш скриптлет? Единственное, что приходит на ум, это если у вас есть класс вроде

public class YourScriptlet extends JRDefaultScriptlet {
    public void afterDetailEval() throws JRScriptletException {
        // your code here
    }
}

Вы можете добавить конструктор и закрытый член для другого объекта, который служит контейнером для всего, что вам нужно вне контекста Jasper, например,

Какой-то объект для отслеживания количества (или того, что вам нужно, чтобы отслеживать)

public class YourInfoObject {
    private final AtomicInteger count = new AtomicInteger();
    public int increment() {
        return this.count.incrementAndGet();
    }
    public int get() {
        return this.count.intValue();
    }
    public void set(int value) {
        this.count.set(value);
    }
}

Ваш класс скриптлета с конструктором

public class YourScriptlet extends JRDefaultScriptlet {
    private final YourInfoObject obj;
    public YourScriptlet(YourInfoObject obj) {
        this.obj = obj;
    }
    public void afterDetailEval() throws JRScriptletException {
        // your code here
        obj.set(count);
    }
}

Затем откуда угодно (сервлет со ссылкой на ваш объект) вы можете получить доступ к значению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...