- 浏览: 10124 次
- 性别:
- 来自: 珠海
最新评论
文章列表
在上一篇中了解了JXLS的工作原理后,这次来对上篇结尾的问题进行分析。
因为一个JXLS报表模板中的表达式往往对应一个或者多个JAVA对象数据(实例集合或者实例)比如${stus}和${grade}两个。
所以在接到新需求中,要创建新的report,这样不可避免的要创建新对应的JAVA Bean。那有没有一种方法可以动态的去创建JAVA类呢(所谓动态则是不需要物理存在的java类文件),我们可以配置一些类的属性在文件或数据库中,然后动态的去创建一个类,根据配置设置类的属性,以及设置好属性的值。
后来发现其实CGLIB这个类库(在很多开源框架中使用)已经实现了这些功能(BeanGener ...
JXLS是基于Jakarta POI API的Excel报表生成工具,可以生成精美的Excel格式报表。它采用标签的方式,类似JSP标签,写一个Excel模板,然后生成报表,非常灵活简单。
下载地址: http://sourceforge.net/projects/jxls/files/jxls/1.0.6/
下面通过一个简单的实例来描述其常规应用。生成某班级学生信息的报表,首先我们得新建一个Student类,比如有姓名(name), 性别 (sex), 年龄(age)这三个属性。
public class Student {
private String name;
priva ...
在工厂方法模式中具体的工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个方法。但是有时候我们需要一个工厂可以提供多个产品的对象,而不是一个单一的产品对象。
为了更好的理解抽象工厂,我引入另外一个实例:
在这里有个设备工厂(抽象的)他生产两种设备,分别是电视机和空调,但是涉及到品牌的区别,所以有两个具体的设备工厂,分别是Haier和TCL,他们都能生产自己家品牌的电视机和空调。
Code:
设备工厂以及具体设备工厂
public interface EFactory
{
public Tele ...
针对上一篇中的简单工厂方法,在增加新商品的时候会涉及到工厂方法逻辑的一个改动,与开闭原则的思想有出入,所以工厂方法的引入解决了这个问题。
在工厂方法中其实工厂和之前的商品一样也已经被抽象出来,生产对象 ...
工厂方法顾名思义,即是创建实例的方法。简单工厂方法又称为静态工厂,因为创建实例的逻辑都封装在工厂方法内部,往往这个方法是静态的,方便Client端调用 。
代码如下:
商品的抽象接口,内部有个生产商品的方法Produce
public interface Product {
void produce();
}
具体的商品A and B, 都实现同一抽象接口Product
public class ProductA implements Product {
@Override
public void produce() {
System.o ...
之前用EXTJS的gridPanel组件的时候,因为经常对gridPanel中的stroe数据进行过滤,所以有时候总是导致gridPanel自身所带的scrollbar失效。
取个实例,EXTJS gridPanel自带的滚动条,是有一个固定的列宽来放置这个scrollbar的,如上图所示。所以当这个scrollbar失效的时候,无论你怎么拖动这个滚动条,grid中的数据永远都不会随scrollbar的移动而展示相应区域的数据(换句话说就是你永远看到的数据都是截图中的这几条record)。
至于为什么gridpanel会失效?暂时也不清楚原因是什么。之前在Extjs的论坛和stacko ...
前端时间开发的时候,需要将Ext.data.Store中的data先储存到一个变量中,然后将把这个store的data清空,最后再把变量中的data load到store中。
代码是这样的:
下面列举一些实例来说明Store findRecord 这个方法简单使用。
比如你有一个userStore,这时想要去查找一个名字为Felix的user (前提当然是user model得有一个user的field),查询如下:
Extjs的DataView组件似乎没有排序的功能(针对View中的Item进行拖拽实现位置变化来达到排序的目的),下面的代码实现则是对这个功能的补充:
1. 拖拽任意的ITEM来实现位置切换(如将ITEMA拖至ITEMB上方,然后放开,则ITEMA会插入到ITEMB的前面一个位置)。
2. 如果将一个ITEM拖放的位置不是在某个ITEM的区域,而是空白的某个区域,则这个ITEM会自动排到最后一个位置。
3. ToolBar中的reset是对view中的所有ITEM按照首字母的升序排列。
拖放前:
将PO#放在第一位,然后将Consignee拖放至最后一位:
最近项目接到一个需求,要求用拖拽实现在两个Panel之间实现拖拽添加和删除元素的功能.首先想到的是EXTJS提供的View组件,View组件绑定一个Store和Template就可以得到预期的UI显示效果,再加上EXTJS提供的DD(Drag and Drop)功能,则可以实现两个View组件之前的元素拖拽添加以及删除.效果如下:Demo代码实例如下:
Ext.onReady(function(){
var columnData = [
["Consignee", "1001"],["PO# ...