|
|
|||
|
|||
|
我自己定义的 engine, rptdesign使用了Script数据源
出现了下面的错误 The following items have errors: ReportDesign (id = 1): - There are errors evaluating script "count = 0; cf = new Packages.birt.StudentListFactory(); c = cf.createStuList();":{1}. Error.ScriptEvaluationError ( 1 time(s) ) detail : org.eclipse.birt.report.engine.api.EngineException: There are errors evaluating script "count = 0;cf = new Packages.birt.StudentListFactory();c = cf.createStuList();":{1}. at + There are errors evaluating script "if (count < c.length){ row["sid"] = c[count].getSid(); row["sname"] = c[count].getSname(); row["sage"] = c[count].getSage(); row["gid"] = c[count].getGid(); count++; return true; } return false;":{1}. Error.ScriptEvaluationError ( 1 time(s) ) detail : org.eclipse.birt.report.engine.api.EngineException: There are errors evaluating script "if (count < c.length){ row["sid"] = c[count].getSid(); row["sname"] = c[count].getSname(); row["sage"] = c[count].getSage(); row["gid"] = c[count].getGid(); count++; return true;}return false;":{1}. at + Unhandled exception when executing script |
|
|||
|
public class BirtEngine {
IReportEngine birtEngine; public IReportEngine getBireEngin(ServletContext sc) { EngineConfig config = new EngineConfig(); config.setLogConfig(sc.getRealPath(""), Level.FINE); config.setEngineHome(""); IPlatformContext context = new PlatformServletContext(sc); config.setPlatformContext(context); // // Register new image handler 解决了读取图片时的路径问题 // HTMLEmitterConfig emitterConfig = new HTMLEmitterConfig(); // emitterConfig.setActionHandler(new HTMLActionHandler()); // HTMLServerImageHandler imageHandler = new HTMLServerImageHandler(); // emitterConfig.setImageHandler(imageHandler); // config.getEmitterConfigs().put("html", emitterConfig); // -NLS-1$ try { Platform.startup(config); } catch (BirtException e) { e.printStackTrace(); } IReportEngineFactory factory = (IReportEngineFactory) Platform .createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY); birtEngine = factory.createReportEngine(config); return birtEngine; } |
|
|||
|
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws ServletException { // TODO Auto-generated method stub HashMap paramDetails = new HashMap(); BirtEngine birtReportEngine = new BirtEngine(); IReportEngine engine = birtReportEngine.getBireEngin(request.getSession().getServletContext()); // setup image directory HTMLRenderContext renderContext = new HTMLRenderContext(); renderContext.setBaseImageURL(request.getContextPath() + "/report/images"); renderContext.setImageDirectory(request.getSession().getServletContext().getRealPath("/report/images")); // logger.log(Level.FINE, "image directory " // + sc.getRealPath("/report/images")); System.out.println(renderContext.getBaseImageURL()); System.out.println(renderContext.getImageDirectory()); HashMap<String, HTMLRenderContext> contextMap = new HashMap<String, HTMLRenderContext>(); contextMap.put(EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, renderContext); IReportRunnable design; try { // Open report design design = engine.openReportDesign(request.getSession().getServletContext().getRealPath("/reports") + "/stuparam.rptdesign"); // 以下是将报表里的参数和传递进来的参数匹配然后放到parmDetails集合中 IGetParameterDefinitionTask taskParam = engine.createGetParameterDefinitionTask(design); Collection params = taskParam.getParameterDefns(true); Iterator iter = params.iterator(); // // Iterator iterList = paramsList.iterator(); // // Iterate over all parameters while (iter.hasNext()) { IParameterDefnBase param = (IParameterDefnBase) iter.next(); // // Parameters are not in a group IScalarParameterDefn scalar = (IScalarParameterDefn) param; if (scalar.getName().equals("age")) { // // String paramList = (String)iterList.next(); paramDetails.put(scalar.getName(), 22); // // System.out.println(scalar.getName() + " " + // paramList); } // else { // Date paramList = new Date(); // try { // // paramList = // // DateUtil.parse((String)iterList.next(),"yyyy-M-d"); // } catch (Exception e) { // e.printStackTrace(); // } // // parmDetails.put(scalar.getName(), paramList); // // System.out.println(scalar.getName() + " " + paramList); // } } // taskParam.close(); // // create task to run and render report IRunAndRenderTask task = engine.createRunAndRenderTask(design); task.setAppContext(contextMap); task.setParameterValues(paramDetails); // set output options HTMLRenderOption options = new HTMLRenderOption(); options.setOutputFormat(HTMLRenderOption.LAYOUT_PREFERENCE_AUTO); options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML); options.setOutputStream(response.getOutputStream()); task.setRenderOption(options); // run report task.run(); task.close(); } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } return null; |
|
|||
|
birt.StudentListFactory放在什么目录? 需要在EngineConfig中的AppContext中需要定义用户自己的appClassLoader,BIRT使用此ClassLoader装载在script中应用到的Class.
HashMap appContext = new HashMap(); appContext.put(EngineConstants.APPCONTEXT_CLASSLOADER_KEY, classLoader); config.setAppContext(appContext); |
|
|||
|
引用:
谢谢啦! |
|
|||
|
引用:
你真是 安讯的活雷锋。 |
![]() |
| 主题工具 | 搜索本主题 |
| 显示模式 | |
|
|