技术开发 频道

BIRT.CHART: 让Y轴标题动态修改

【IT168技术文档】BIRT的chart功能似乎并不是很强大,反正在使用过程中,出现过编辑器不好使,被迫直接修改xml文件的情况.

现在,有一个这样的需求,就是让Y轴的标题显示用户输入的值.


如图所示,这个标题是在编辑/定义图表的时候输入的固定值,这个值不管是改成params["test"]还是reportContext.getParameter("test")都会直接返回文本,而不是表达式值.

但是,这个文本唯一支持的动态,就是本地化,那么本文将介绍如何利用resources.properties来实现这个标题的动态显示

首先,设置这个chart的resource使用<YOUR_LOCATION>/reources.properties文件

然后,在这个properties文件中输入test_field=Hopeshared's Test

接着,修改这个title

这个时候,preview的结果,title就会显示properties文件里的内容

向report添加一个名为test的参数,这个参数是string类型,必填项,用户的输入将保存到properties文件并显示在chart中

接着,写个脚本,让properties文件内容发生变化
在整个report的initialize方法中,写入
1importPackage(Packages.java.lang); 2importPackage(Packages.java.util); 3importPackage(Packages.java.io); 4importPackage(Packages.java.net); 5 6var t_value = params["test"]; 7var prop=new Properties(); 8 9var in_stream=new FileInputStream("<YOUR_PROPERTIES_FOLDER>/resources.properties"); 10prop.load(in_stream); 11in_stream.close(); 12 13prop.put("test_field", t_value); 14 15var fout=new FileOutputStream("<YOUR_PROPERTIES_FOLDER>/resources.properties"); 16prop.store(fout,"Test Properties"); 17fout.close(); 18 19var current = new File("<YOUR_PROPERTIES_FOLDER>"); 20 21var cl = new URLClassLoader(new Array(current.toURL())); 22res = ResourceBundle.getBundle("resource", Locale.getDefault(), cl);

最后,preview一下,看看结果.

原文地址
0
相关文章