Webwork使用JasperReport入门实例

来源:互联网 发布:阿里云sdk 编辑:程序博客网 时间:2024/05/16 17:07

 

 

首先,建立bean及Action

 

package ch7.example6;

public class Member{
     String firstname;
     String lastname;
     String email;
    
    
public String getEmail() {
        
return email;
    }

    
public void setEmail(String email) {
        
this.email = email;
    }

    
public String getFirstname() {
        
return firstname;
    }

    
public void setFirstname(String firstname) {
        
this.firstname = firstname;
    }

    
public String getLastname() {
        
return lastname;
    }

    
public void setLastname(String lastname) {
        
this.lastname = lastname;
    }

}
  


package ch7.example6;

import java.util.ArrayList;
import java.util.List;

import ch7.example5.Member;

import com.opensymphony.xwork.ActionSupport;

public class TestJaserReport extends ActionSupport {

    List members
=new ArrayList();
       
public TestJaserReport(){
           Member m1
=new Member();
           m1.setEmail(
"gaoxiang1@tom.com");
           m1.setFirstname(
"gao1");
           m1.setLastname(
"xiang1");
           
           Member m2
=new Member();
           m2.setEmail(
"gaoxiang2@tom.com");
           m2.setFirstname(
"gao2");
           m2.setLastname(
"xiang2");
           
           Member m3
=new Member();
           m3.setEmail(
"gaoxiang3@tom.com");
           m3.setFirstname(
"gao3");
           m3.setLastname(
"xiang3");
            
            members.add(m1);
            members.add(m2);
            members.add(m3);
       }


    
public String execute() throws Exception {
    
        
return SUCCESS;
    }


    
public List getMembers() {
        
return members;
    }


    
public void setMembers(List members) {
        
this.members = members;
    }


    
  
}

 

以xml形式编写jasperreport模板文件:

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"
>


<jasperReport name="members">

   
<field name="email" class="java.lang.String">
     
<fieldDescription>email</fieldDescription>
   
</field>
   
<field name="firstname" class="java.lang.String">
     
<fieldDescription>firstname</fieldDescription>
   
</field>
   
<field name="lastname" class="java.lang.String">
     
<fieldDescription>lastname</fieldDescription>
   
</field>
   
<detail>
     
<band height="20">
        
<textField>
           
<reportElement x="0" y="3" width="100" height="15"/>
           
<textFieldExpression>$F{email}</textFieldExpression>
        
</textField>
         
<textField>
           
<reportElement x="100" y="3" width="100" height="15"/>
           
<textFieldExpression>$F{firstname}</textFieldExpression>
        
</textField>
         
<textField>
           
<reportElement x="200" y="3" width="100" height="15"/>
           
<textFieldExpression>$F{lastname}</textFieldExpression>
        
</textField>
     
</band>
   
</detail>
</jasperReport>

 

使用com.opensymphony.webwork.views.jasperreports.CompileReport;进行报表模板编译,生成japser文件,这很重要,我开始以为直接写japser文件就可以了,但一直有不能读取对象的异常,查看了jasperreport的源码,方知道,报表文件原来是需要进行编译的

 

xwork配置文件

 

<include file="webwork-default.xml"></include>
<action name="testjaserreport-html" class="ch7.example6.TestJaserReport">
      
<result name="success" type="jasper">
        
<param name="location">/ch7/members.jasper</param>
        
<param name="dataSource">members</param>
        
<param name="format">PDF</param>
      
</result>
   
</action>

其中location是jasper文件路径
dataSource是action中有getter方法的属性
format是报表格式,除了PDF,jasperreport还还支持HTML,XLS,CSV,XML格式

jasper result还有一个特殊之处,他需要一个1*1像素的图形文件,放到webroot的images目录下,取名为px(注意:没有扩展名)

运行action,可以看到浏览器已经给出PDF格式的报表了

 

原创粉丝点击