jasperReport报表HTML预览的时候不能指定到px图片
response.setContentType("text/html");
Map imagesMap = new HashMap();
request.getSession(true).setAttribute("IMAGES_MAP", imagesMap);
JRHtmlExporter exporter = new JRHtmlExporter();
exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, request.getContextPath() + imageServletUrl);
指定这几个parameter就可以了
JasperCompileManager.compileReportToFile编译后这个会产生Sample_Report.jasper文件,但是你有没有发现在你的硬盘上存在jasper文件呢?不建议这样使用!jrxml文件完全可以通过iReport编译成jasper文件,为什么你还有使用compileReportToFile方法呢?
你搞错了吧!fillReportToFile这种情况下第一个参数使用jasperReport对象
空指针应该不是报表这边出现问题吧!,你多检查代码吧!或者贴上来看看
@xiefan
完全可以啊,建议使用jasper文件操作,在你的工程里编译是很耗费性能的
现在回过头来在看以前写的东西真是太简单了,有时间重新写一篇整合的,这些都是很基础啊
@john
JasperReport不是不适合中国报表,只是它不是为中国报表而设计!jasperReport功能很强大,只要你有想象力完全可以定制所需要的报表,关键是它开源,是一个纯java报表,如果你是跨系统那么它是首选,前提是你有足够的时间和耐心哦
@Heis
博主说的很有道理,需求不同,中国式复杂的报表的确做起来很麻烦.
我也是发表一下个人意见而已.大家共同学习啊!
我接触过jasper的api,底层针对子报表采用io加载,编译jasper文件,之后.java文件,博主可以跟踪调试一下多子报表的例子看看,程序运行时会在你的硬盘上写文件之后编译加载到内存后删除掉,放开底级别的日志就可以看出来.
我们的系统是跑在局域网的,运行起来都不是很理想.至于报表上展示的数据和图表等等需要特殊经过计算的数据我是采用scriplet处理,而底层只需要一个简单的connection就可以(主要是考虑到我们的报表系统是给用户使用的,而用户只会一些简单的sql,配上我们封装的scriplet就可以达到想要的效果).
关于那个"分栏",我是看了这个效果图才有此说法,至于是不是和你的需求一致那大家就应该多交流了:先说说我的想法:分成两列横着打印就可以出现你要的这种效果图,不知道博主是不是这个意思?学习学习!
@xiefan
JRParameter jrParameters[] = jasperReport.getParameters();
拿出所有的参数,然后遍历jrParameters数组,
JRParameter jrParameter = jrParameters[i];
String name = jrParameter.getName();
取出每一个参数的名字
getValueClassName()
取出参数的类型
建议你往下看看,多看看jasperAPI
这样的报表做起来很麻烦,而且多个子报表效率无疑会很底,楼主有没有想过jasperReport的API支持多结果集的报表,也就是针对报表上不同的块解释不同的SQL填充?而且楼主所说的标签式报表完全可以通过简单的一个jrxml文件通过分栏操作完成
@xiefan
哈哈 你要是继续往下看你就会知道怎么做了
这样确实解决了烦人的SQL但是增加了额外的负担,fillReport你需要的数据源需要从xmlDatasource中加载,如果再来点统计、图表型等等,scriplet也会让你越来越头疼,首先维护起来麻烦,其次为了填充obj大对象所带来代码额外的代码、性能开销......
@entering
图形报表一般在jasper中是以image 变量的形式出现的,这个和普通字段的设计没有区别,主要就是构造你的图形scriplet,再者jasper对jChart图表支持的很到位,你可以多看看它的文档尤其iReport生成的jrxml文件结构
@呵呵
我在接触iReport时都没发现有这个东东,只知道把iReport和jasperReport的代码下载下来研究,现在都做的这么好了,得去多逛逛,不然落伍了
怎么会关闭web服务呢?那你要检查一下你的代码了,建议你实现自己的JasperViewer
哈哈 这个问题是很多报表都会出现的问题,那要看你的纸张了,要是纸张不限制的话你可以设置尽可能的大些防止撑开影响美观,要是想动态改变也不是很难,jasperReport可以动态的改变你所涉及的任何域的所有属性,所以你说的那个就很容易实现,这些东西我都有测试过,之后有空会都写出来的
java都提倡开源,jasperReport个人觉得功能非常强大,特别是它支持scriptlet,根据API我们可以定制自己的报表,只能说目前它是最适合的一个!
@zhanghuang
jasperReport是通过scriptlet嵌入图表的,要是真如你所说的那样你就应该检查一下你的代码是否动态的更新了图表。
我们这边有自己的报表系统,集成了好多优秀的报表,现在对jasperReport的支持不是很好,有时间私聊吧!laoshulin@gmail.com
我们这边需要提供给别人接口,而Ireport做的交叉报表功能有限啊!
这些是我毕业设计里的东东摘出来写了点,最近忙一项目没有时间找这些,你要是需要的话我把整个包发给你吧!laoshulin@gmail.com
哥们!有研究过纯Java代码做一个crosstab吗?我现在在做这个接口,能交流下吗?
这个应该是JDK1.5之后的自动装箱、拆箱吧!
-128~127 基本数据类型
大于127 为对象
re: Log4j的使用 凌晨风 2008-08-14 20:47
当你把数据展示出来后要是还需要下一步的传输,在下一个页面获得select中选中的值,Example:request.getParameter("selectTest");对于HTML值为0对应显示是"bulktree",而Struts2 List Tags,则是listKey对应ListValue,headerKey对应headerValue
re: Log4j的使用 凌晨风 2008-08-14 20:36
http://struts.apache.org/2.1.2/docs/select.html这个是List tag的详细介绍。List tag只有list属性是必须的,
request范围内有个List集合(student)里装着所有学生的姓名,你应该这样遍历:<s:select list="student" name="selectTest" />
这样仅限于展示出数据。
你可以对照着HTML:
<select name="selectTest">
<option value="">请选择</option>
<option value="0">bulktree</option>
<option value="1">oakertree</option>
<option value="2">laoshulin</option>
</select>
re: 招聘程序员 凌晨风 2008-08-05 13:09
你好,我是一名java程序员,目前正在做一个项目,由于待遇和人事方面问题打算做完这个项目后换家公司,项目到十月底完工,那时候你们还招聘吗?
@jezz
www.apache.org上不是有吗?
*顺便说一下,只是初学,第一次整合,多多批评指教。
*还有一问题,我在一个action类里写好几个方法execute***方法,在struts.xml文件中通过method属性匹配,要是整合Spring,我该怎么处理多方法的action,在application中该怎么配置?
*系统没有分页,哪位能给个高效分页的整合代码看看?本人不胜感激!
运行本例子程序需要commons-email-1.1.jar和mail.jar这两个包!
顺便说说,毕业在即,我的系统侧重业务逻辑,主要是想用Struts2,严格按照MVC三大模块做,业务逻辑全部封装在DAO工厂中,前台JSP显示OGNL,由于导师要求后面加了QQ/MSN、短信平台(测试成功未实现),哪位能提供个就业的机会,本人感激不尽,后续将继续整理系统的相关知识发布上来。谢谢关注!
re: 开源软件逐渐走进了我的生活 凌晨风 2008-03-21 10:36
Eclipse也是全能的IDE不仅仅是Java,但是大部分人只知道Eclipse是java开发工具 --- Jbuilder是后面用来比较的
re: 申请加入 "深圳Java小组" 凌晨风 2008-03-11 09:55
支持!
re: 《精通CSS》阅读笔记 第四章 凌晨风 2008-02-19 11:19
小弟想让求一个css的样式文件,我做一个office办公系统,页面不多,但是小弟时间紧迫对css不懂,业务逻辑都弄好了,大哥能否写一个简单明了的css文件,简简单单美化下我的系统就行,我自己用Dreamwear设置的一塌糊涂,页面采用的是Struts tag 所以想求一个css文件统一一下风格,就象此页面简单明了就行,还有就是我的系统表格较多,麻烦大哥了再次先谢过!
re: java Web 学习 凌晨风 2008-01-14 21:05
事情要向你想的那么复杂人就没法活了
re: 欢迎加入我们团队! 凌晨风 2008-01-13 19:26
java爱好者,也是大四学生
http://www.blogjava.net/bulktree,最近正在用struts2写一个网络办公系统,希望加入团队学习请教
re: 需要加入XAUG的朋友请留言给我! 凌晨风 2008-01-13 19:23
java爱好者,也是大四学生,陕西咸阳人,现河北理工大学
http://www.blogjava.net/bulktree,最近正在用struts2写一个网络办公系统,希望加入团队学习请教
re: Struts2上传文件示例 凌晨风 2008-01-04 21:43
楼主写的不错,这个例子好像是Struts包里的源码,但是我不知道上传成功后怎样看这个文件,比如我传了一张图片,我怎样才能看到我传的图片呢,上传的是一个tmp的虚拟文件,我也弄不清楚,帮忙啊!
re: JAVA 连接MYSQL 凌晨风 2007-12-31 10:21
这是一个标准的Java连接MYsql数据库的步骤,楼主写的几乎是不能用的,一个标准的连接是要关闭资源........由于没有找到合适的源码,所以就找了这个这个日期处理的源码贴上来。
package JDBC;
import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.Time;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
/**
*
* @author oakertree
*
*/
public class TestJDBCDate {
public static void main(String[] args) {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
// new com.mysql.jdbc.Driver();
con = DriverManager.getConnection("jdbc:mysql://localhost:3307/test", "root", "admini");
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * FROM time");
while(rs.next()) {
/*
Date d = rs.getDate("date");
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
System.out.println(sdf.format(d));
*/
/*
Time t = rs.getTime("time");
SimpleDateFormat sdf = new SimpleDateFormat("HH时mm分ss秒");
System.out.println(sdf.format(t));
*/
Date d = rs.getDate("datetime");
Time t = rs.getTime("datetime");
SimpleDateFormat sdfdate = new SimpleDateFormat("yyyy年MM月dd日");
SimpleDateFormat sdftime = new SimpleDateFormat("HH时mm分ss秒");
System.out.println(sdfdate.format(d) + sdftime.format(t));
/*
Timestamp dt = rs.getTimestamp("datetime");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
System.out.println(sdf.format(dt));
*/
//得到日期中的月
/*
Calendar c = Calendar.getInstance();
c.setTime(d);
System.out.println(c.get(Calendar.MONTH));
*/
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(rs != null) {
rs.close();
rs = null;
}
if(stmt != null) {
stmt.close();
stmt = null;
}
if(con != null) {
con.close();
con = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
/*
+----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| date | date | YES | | NULL | |
| time | time | YES | | NULL | |
| datetime | datetime | YES | | NULL | |
+----------+----------+------+-----+---------+-------+
*/
re: 为Struts 2.0做好准备 凌晨风 2007-12-29 00:38
2007-12-29 0:24:48 org.apache.struts2.components.Form evaluateExtraParamsServletRequest
警告: No configuration found for the specified action: 'login.action' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
2007-12-29 0:24:48 org.apache.struts2.components.Form evaluateExtraParamsServletRequest
警告: No configuration found for the specified action: 'login.action' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
出现如下错误,程序运行正常!不知道只是怎么回事?
错误发生在login.jsp页面刷新时就出现。
这个应该是工厂设计模式中的简单工厂模式吧!DAO不仅仅是对数据库的访问封装在一个接口,DAO的设计就是为了更好的隐藏IMPL的实现细节,接口只提供访问的方法而已,应该是J2SE的多态
re: 毕业后的购书一览表 凌晨风 2007-12-16 19:15
真够强的,都是好书啊!我明年毕业,都没钱买,能共享吗?