我有一个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打印的数据?
任何帮助将不胜感激!
答案 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)访问该值。