将数据从Java文件传递到Ajax

时间:2018-07-01 19:11:39

标签: javascript java ajax jsp

我有一个Java类,将进程的进度打印为1%,2%,3%。现在,我想使用AJAX请求阅读此进度,并不断更新网页中的进度。我无法将Java文件转换为servlet,因为Jasper将该Java文件用作scriptlet。

脚本代码为:

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

如何从AJAX请求中读取java打印的数据?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

如何创建脚本?唯一想到的就是

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);
    }
}

您的带有构造函数的scriptlet类

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);
    }
}

然后,您可以从其他任何地方(引用对象的Servlet)访问该值。