精彩的人生

好好工作,好好生活

BlogJava 首页 新随笔 联系 聚合 管理
  147 Posts :: 0 Stories :: 250 Comments :: 0 Trackbacks
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一下,看看结果.

欢迎大家告诉我其他更好的办法来达到这个目标,谢谢!
posted on 2007-11-12 13:20 hopeshared 阅读(3812) 评论(4)  编辑  收藏 所属分类: BIRT

Feedback

# re: BIRT.CHART: 让Y轴标题动态修改[未登录] 2007-11-13 16:07 hopeshared
傻了,其实有很简单的办法实现的
在图上写个脚本
function beforeDrawAxisTitle(axis, label, icsc)
{
label.getCaption().setValue(icsc.getExternalContext().getScriptable().getParameterValue("test"));
}
就可以了,hoho  回复  更多评论
  

# re: BIRT.CHART: 让Y轴标题动态修改 2008-04-22 18:42 fy_kenny
好方法,

我初次接触,还望前辈指点啊.  回复  更多评论
  

# re: BIRT.CHART: 让Y轴标题动态修改 2008-08-19 08:52 月下孤影
你这个方法
function beforeDrawAxisTitle(axis, label, icsc)
{
label.getCaption().setValue(icsc.getExternalContext().getScriptable().getParameterValue("test"));
}

应该写到哪里呢?  回复  更多评论
  

# re: BIRT.CHART: 让Y轴标题动态修改[未登录] 2011-07-04 13:56 clark
@hopeshared
X轴好像也发生了改变,和Y轴一样!  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: