无聊人士

搬家==》www.soapui.cn

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  32 随笔 :: 0 文章 :: 60 评论 :: 0 Trackbacks

2007年4月6日 #

struts 2.0.6GA开始试螃蟹,照着struts2的tag文档写成<@s.datetimepicker/>,结果老是报错
211672 [http-8080-Processor25] ERROR freemarker.runtime  - 
on line 
7, column 17 in admin/index.ftl s.datetimepicker not found.
The problematic instruction:
----------
==> user-directive s.datetimepicker [on line 7, column 17 in admin/index.ftl]
----------

Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: on line 
7, column 17 in admin/index.ftl s.datetimepicker not found.

试着google一下,正好有人也提交了这个bug,改成 <@s.dateTimePicker />,问题解决

The fix is as follows:

In struts2-core-
2.0.6:
org.apache.struts2.views.freemarker.tags.StrutsModels

has a method
getDateTimePicker()

Which should be re-named:
getDatetimepicker()

to match with the naming convention.


hello,struts2.jpg
posted @ 2007-04-20 10:26 mmwy 阅读(2581) | 评论 (0)编辑 收藏

来自:http://www.javaworld.com.tw/jute/post/print?bid=11&id=166588

3.Re:BIRT報表工具的問題 [Re: uxa]     Copy to clipboard
Posted by: uxa
Posted on: 
2006-09-15 15:28

經過幾次的失敗後~~小弟終於試出來了
不過感覺它似乎只是support xls file format並沒有excel的一些功能> <

1. download eclipse plugin BIRT,小弟抓的是birt-report-designer-all-in-one-2_1_0.zip
將其解開後把eclipse\plugins和eclipse\features這兩個目錄放到eclipse的目錄底下
現在將eclipse打開,您已經可以開始設計報表了。

2. BIRT預設有支援HTML和PDF的格式,以下說明如何支援xls格式
a. download xls-emitter-bin_2
.1.0.zip,解開後將plugins複製到eclipse\plugins下
b. download poi-bin-
3.0-alpha2-20060616.zip,解開後將jar檔複製到eclipse\plugins\ org.uguess.birt.report.engine.emitter.xls_2.1.0.200607031206\lib
c. xls-emitter-bin_2
.1.0.zip解開後有個path的目錄,
(
1) 將org.eclipse.birt.report.designer.ui目錄下的檔案複製到eclipse\plugins\org.eclipse.birt.report.designer.ui.preview_2.1.0.*.jar
(
2)將org.eclipse.birt.report.viewer目錄下的檔案複製到eclipse\plugins\ org.eclipse.birt.report.viewer_2.1.0.*\birt\WEB-INF\lib\viewservlets.jar
(
3)將org.eclipse.birt.report.engine目錄下的檔案複製到eclipse\plugins\org.eclipse.birt.report.engine_2.1.0.*.jar

完成後啟動eclipse可看到在view report的按鈕上多了xls和ppt兩種格式

BIRT下載位置:http://download.eclipse.org/birt/downloads/
Tribix下載位置:https://sourceforge.net/projects/tribix
ps:請注意版本的問題,BIRT2
.1.0請搭配Tribix XLS Emitter 2.1.0版本,在置換檔名的部份也請注意路徑是否正確

posted @ 2007-04-08 15:42 mmwy 阅读(1609) | 评论 (2)编辑 收藏

条码显示,在birt中最常见的有两种方法:1、使用条码字体(对pdf无效);2、用barcode的开源包,生成barcode,然后在报表里用动态地址去取图片。

今晚看birt文档(第 23 章 使用 Java 编写事件处理程序),例子中用java实现了一个LabelEventAdapter的适配器,对标签元素进行事件控制。脑子里灵光一现,似乎条码有着落了。

我的测试例子很简单,继承ImageEventAdapter类,重载onCreate方法,以进行条形码处理

 1 package cn.ynzc.common.birt.test;
 2 
 3 import java.io.File;
 4 import java.io.FileOutputStream;
 5 
 6 import jbarcodebean.Code128;
 7 import jbarcodebean.JBarcodeBean;
 8 
 9 import org.apache.commons.codec.digest.DigestUtils;
10 import org.eclipse.birt.report.engine.api.script.IReportContext;
11 import org.eclipse.birt.report.engine.api.script.eventadapter.ImageEventAdapter;
12 import org.eclipse.birt.report.engine.api.script.instance.IImageInstance;
13 
14 public class MyLabelClass extends ImageEventAdapter {
15 
16   public void onCreate(IImageInstance image, IReportContext reportContext) {
17     try {
18       //实际应用中,可以使用image.getRowData().getColumnValue("columnname")获得字段值
19       String code = "ABCDEF123-2222";
20       //似乎windows文件名中不允许使用“-”等符号,干脆将code进行md5散列处理
21       File file = new File(System.getProperty("java.io.tmpdir"), DigestUtils.md5Hex(code));
22       //避免每次都进行条码文件生成
23       if (!file.exists()) {
24         JBarcodeBean bb = new JBarcodeBean();
25         bb.setCodeType(new Code128());
26         bb.setShowText(true);
27         bb.setBarcodeHeight(45); //条码高度
28         bb.setCode(code);
29         bb.gifEncode(new FileOutputStream(file));
30       }
31       image.setFile(file.getAbsolutePath());
32     }
33     catch (Exception e) {
34       e.printStackTrace();
35     }
36   }
37 
38 }
39 

测试用的birt报表文件简单得要死,就往上面扔了个image元素,设置其Event Handler Class为刚才写好的java类,最终得到的rptdesign文件内容如下:
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!-- Written by Eclipse BIRT 2.0 -->
 3 <report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.6" id="1">
 4     <property name="createdBy">Eclipse BIRT Designer Version 2.1.2.v20070205-1728 Build &lt;20070205-1728></property>
 5     <property name="units">in</property>
 6     <page-setup>
 7         <simple-master-page name="Simple MasterPage" id="2"/>
 8     </page-setup>
 9     <body>
10         <image id="4">
11             <property name="eventHandlerClass">cn.ynzc.common.birt.test.MyLabelClass</property>
12         </image>
13     </body>
14 </report>

运行测试,条形码出来了
birt.jpg

遗留问题:
这次是调用org.eclipse.birt.report.engine.api.script.instance.IImageInstance.setFile()来解决问题,从javadoc可以看到,IImageInstance有很多方法可以调用,其它方法分别有什么作用?比如我尝试了半天的setData(byte[])方法,一开始以为是用这个方法直接把图形数据set进去就ok,结果未成功。


posted @ 2007-04-07 03:37 mmwy 阅读(4182) | 评论 (4)编辑 收藏

birt的IRunAndRenderTask接口提供了addScriptableJavaObject(java.lang.String jsName, java.lang.Object obj)方法,利用这个方法,在直接调用birt api操作处理报表的时候,我们可以将任何java对象通过addScriptableJavaObject("xxx",Object)加进birt去,然后在birt脚本中直接调用xxx.method()进行操作。

我的测试是在一个webwork+spring+hibernate的webapp应用中进行的,进行报表处理的代码参照http://wiki.eclipse.org/index.php/Servlet_Example编写,在代码中,写了一句
task.addScriptableJavaObject("ctx",
WebApplicationContextUtils.getWebApplicationContext(sc));

birt中定义了一个scripts datasource,然后定义一个data set,在dataset的open方法中编写脚本

infoManager=ctx.getBean("infoManager");
infos=infoManager.loadAll();
...
posted @ 2007-04-06 15:39 mmwy 阅读(2046) | 评论 (3)编辑 收藏