webwork jasperreport的subreport套打(javaBean作为数据源)

webwork环境下的Jasper的配置就不写了。入门的资料jasper官方发布的Demo里有一堆,不过给我印象最深的是关于字符集的问题。Demo中有字符集jar包制作的ANT工程包,一看就明白。

如果有额外的字符集要加入,可以看看这个MONO,记得当时我需要日文MS Gothic,微软的是TTC格式的文件,她是TTF文件的集合。

DEMO中打包的时候要求是TTF的文件,最好是用破解工具把TTC分解出来,应该是出来两个TTF文件;或者花40多美元买个TTF.

..........

 

1.webwork中action的数据存储结构

     list中是员工的Bean,Bean中有基本属性,Address Bean和List<Car>,只是一个测试的例子。参考而已

public class PrintAction extends ActionSupport {

     private List members;

     @Override
     public String execute() throws Exception {

         members = new ArrayList();

         for (int i=0;i<24;i++) {


             Member m = new Member();
             m.setEmail("email"+i+"@briup.com");
             m.setFirstName("firstName"+i);
             m.setLastName("lastName"+i);
            
             Address ad = new Address();
             ad.setName("adress name "+i);
             m.setAddress(ad);
            
             List cars = new ArrayList();
             for (int k = 0;k < 24;k++) {
              Car car = new Car();
              car.setName("car Name" + k);
              car.setType("car type" + k);
              cars.add(car);
             }
             m.setCars(cars);
            
             members.add(m);
         }

       return SUCCESS;
   }

}

 

2.xwork.xml的result的简单配置。

<result name="success" type="jasper">
    <param name="location">/templates/sample01/Member.jasper</param>
    <param name="dataSource">members</param>
    <param name="format">PDF</param>
</result>

 

3.两份.jrxml文件(一份是主模板文件Member.jrxml,一份是子模板文件Member_Cars.jrxml)

我个人认为不要单纯的依赖于ireport工具,就像html文件的制作不能单纯依赖于dreamwaver或FP等。。

Member.jrxml

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="
http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Member" pageWidth="500" pageHeight="800" orientation="Landscape" columnWidth="490" leftMargin="5" rightMargin="5" topMargin="5" bottomMargin="5" isTitleNewPage="true">
 <style name="Sans_Normal" isDefault="true" fontName="DejaVu Sans" fontSize="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
 <subDataset name="dataset1"/>
 <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
  <defaultValueExpression><![CDATA["E://wtp2//workspace//candy//web//templates//sample01//"]]></defaultValueExpression>
 </parameter>
 <field name="email" class="java.lang.String"/>
 <field name="firstName" class="java.lang.String"/> <!--这是员工基本属性-->
 <field name="lastName" class="java.lang.String"/>

 <field name="address.name" class="java.lang.String"/> <!--这是Address Bean中属性-->
 <field name="cars" class="java.lang.Object"/> <!--这是Car的LIST引用,作为子模板的数据源-->
 <title>
  <band height="105">
   <staticText>
    <reportElement x="100" y="53" width="349" height="37"/>
    <textElement>
     <font size="17" isBold="true" isItalic="true"/>
    </textElement>
    <text><![CDATA[members      information]]></text>
   </staticText>
  </band>
 </title>
 <pageHeader>
  <band height="16">
   <textField pattern="EEEEE dd MMMMM yyyy">
    <reportElement x="0" y="0" width="111" height="16"/>
    <textElement/>
    <textFieldExpression class="java.util.Date"><![CDATA[new java.util.Date()]]></textFieldExpression>
   </textField>
  </band>
 </pageHeader>
 <columnHeader>
  <band height="19">
   <staticText>
    <reportElement x="179" y="0" width="132" height="14"/>
    <textElement>
     <font isBold="true" isItalic="true"/>
    </textElement>
    <text><![CDATA[Column header]]></text>
   </staticText>
  </band>
 </columnHeader>
 <detail>
  <band height="429">
   <frame>
    <reportElement mode="Opaque" x="21" y="26" width="405" height="190" backcolor="#CCFFCC"/>
    <staticText>
     <reportElement mode="Opaque" x="0" y="92" width="100" height="20" backcolor="#3333FF"/>
     <textElement>
      <font isBold="true"/>
     </textElement>
     <text><![CDATA[EMAIL]]></text>
    </staticText>
    <staticText>
     <reportElement mode="Opaque" x="0" y="0" width="100" height="20" backcolor="#3333FF"/>
     <textElement>
      <font isBold="true" isItalic="true"/>
     </textElement>
     <text><![CDATA[First Name]]></text>
    </staticText>
    <staticText>
     <reportElement mode="Opaque" x="0" y="42" width="100" height="20" backcolor="#3333FF"/>
     <textElement>
      <font isBold="true" isItalic="true"/>
     </textElement>
     <text><![CDATA[Last Name]]></text>
    </staticText>
    <staticText>
     <reportElement mode="Opaque" x="0" y="146" width="100" height="20" backcolor="#6600FF"/>
     <textElement>
      <font isBold="true"/>
     </textElement>
     <text><![CDATA[Address]]></text>
    </staticText>
    <textField>
     <reportElement x="164" y="92" width="186" height="20"/>
     <textElement/>
     <textFieldExpression class="java.lang.String"><![CDATA[$F{email}]]></textFieldExpression>
    </textField>
    <textField>
     <reportElement x="164" y="0" width="186" height="20"/>
     <textElement/>
     <textFieldExpression class="java.lang.String"><![CDATA[$F{firstName}]]></textFieldExpression>
    </textField>
    <textField>
     <reportElement x="164" y="42" width="186" height="20"/>
     <textElement/>
     <textFieldExpression class="java.lang.String"><![CDATA[$F{lastName}]]></textFieldExpression>
    </textField>
    <textField>
     <reportElement x="164" y="146" width="186" height="20"/>
     <textElement/>
     <textFieldExpression class="java.lang.String"><![CDATA[$F{address.name}]]></textFieldExpression>
    </textField>
   </frame>
   <line>
    <reportElement positionType="Float" x="11" y="250" width="438" height="1"/>
   </line>
   <subreport>
    <reportElement mode="Opaque" x="11" y="263" width="438" height="150" backcolor="#99FF99"/>
    <dataSourceExpression><![CDATA[$F{cars}]]></dataSourceExpression>
    <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "Member_Cars.jasper"]]></subreportExpression>
   </subreport>
  </band>
 </detail>
 <columnFooter>
  <band height="25">
   <staticText>
    <reportElement x="179" y="5" width="100" height="20"/>
    <textElement>
     <font isBold="true" isItalic="true"/>
    </textElement>
    <text><![CDATA[Column footer]]></text>
   </staticText>
  </band>
 </columnFooter>
 <pageFooter>
  <band height="24">
   <textField>
    <reportElement x="174" y="0" width="137" height="24"/>
    <textElement>
     <font isBold="true" isUnderline="true"/>
    </textElement>
    <textFieldExpression class="java.lang.Integer"><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
   </textField>
  </band>
 </pageFooter>
</jasperReport>

 

Member_Cars.jrxml

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="
http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="cars" pageWidth="400" pageHeight="150" columnWidth="400" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
 <field name="name" class="java.lang.String"/>
 <field name="type" class="java.lang.String"/>

 <pageHeader>
  <band height="26" splitType="Stretch">
   <staticText>
    <reportElement x="143" y="0" width="100" height="20"/>
    <textElement>
     <font isBold="true" isItalic="true"/>
    </textElement>
    <text><![CDATA[car page header]]></text>
   </staticText>
  </band>
 </pageHeader>
 <columnHeader>
  <band height="25" splitType="Stretch">
   <staticText>
    <reportElement x="143" y="0" width="100" height="20"/>
    <textElement>
     <font isBold="true" isItalic="true"/>
    </textElement>
    <text><![CDATA[car column header]]></text>
   </staticText>
  </band>
 </columnHeader>
 <detail>
  <band height="25" splitType="Stretch">
   <textField>
    <reportElement x="172" y="0" width="228" height="20"/>
    <textElement/>
    <textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
   </textField>
   <textField>
    <reportElement x="0" y="0" width="172" height="20"/>
    <textElement/>
    <textFieldExpression class="java.lang.String"><![CDATA[$F{type}]]></textFieldExpression>
   </textField>
  </band>
 </detail>
 <columnFooter>
  <band height="22" splitType="Stretch">
   <staticText>
    <reportElement x="143" y="0" width="100" height="20"/>
    <textElement>
     <font isBold="true" isItalic="true"/>
    </textElement>
    <text><![CDATA[car column footer]]></text>
   </staticText>
  </band>
 </columnFooter>
</jasperReport>

 

参考资料:

 

http://www.opensymphony.com/webwork_old/src/docs/manual/views-jasper.html#report

http://www.opensymphony.com/webwork_old/src/docs/manual/views-jasper.html#subreports

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值