幸せのちから

平凡的世界
看似平常实崎岖
成如容易却艰辛

1.0.1-M5-A4升级说明(M5 Release翻译稿)

1.1. 开发快照版

extremecomponents-1.0.1-M5-A4版(下载) 是正式版发行前的最后开发快照版。这个build版所使用的代码将被下一个release版沿用。

1.2. 1.0.1-M5-A4

我决定发布一个新的里程碑(milestone)版是因为我对视图(view)的代码做了一些调整,现在eXtremeTable将能够支持AJAX(而不是局部build)。 在确认release候选版前,这些增加的大的特性能够完美地工作。

下面列出的是eXtremeTable下一个里程碑(milestone)版特性和改进,我希望从上一个里程碑版升级到现在这版没有任何问题(breakage)。 然而,在完成M4版视图实现后,我决定我必须做最后的更改...将静态builders变为具体的类。这将是唯一可能出现问题(breakage)并且 将只影响到定制视图(定制cells也一样,但是更多的是较平和的deprecated)。尽管那样,这些更改将很容易实现。

1.3. Html Builder类具体化

所有的视图builder类具体化,需要被实例化,这些只对开发者需要创建定制试图或cells有影响。 这是因为需要使得视图代码能够像他们需要的那样具有弹性。builder classes是静态的能够很好地工作,但是 将来没有机会来做一些有意义的事,并且创建定制试图更加麻烦。然而,现在这些方法和原来的一样,而仅仅是需要对它进行实例化。

为了使这种转变更容易CellBuilder仍然是静态的,但是现在为deprecated。新的(非静态)builder称为ColumnBuilder,通过这个名称我们能更确切地知道什么被构建了。

public String getHtmlDisplay(TableModel model, Column column) {
ColumnBuilder columnBuilder = new ColumnBuilder(column);
columnBuilder.tdStart();
columnBuilder.tdBody(getCellValue(model, column));
columnBuilder.tdEnd();
return columnBuilder.toString();
}

另一个例子,使用ColumnBuilder定制cells如下:

public String getHtmlDisplay(TableModel model, Column column) {
InputBuilder inputBuilder = new InputBuilder(column);
inputBuilder.tdStart();
try {
Object bean = model.getCurrentRowBean();
Integer id = new Integer(BeanUtils.getProperty(bean, "id"));
inputBuilder.tdBody(id);
} catch (Exception e) {}
inputBuilder.tdEnd();
return inputBuilder.toString();
}
private static class InputBuilder extends ColumnBuilder {
public InputBuilder(Column column) {
super(column);
}
public void tdBody(Integer id) {
getHtmlBuilder().input("radio").name("location.id").id("location.id").value(id.toString()).onclick("populateLocationFields(this.value)");
getHtmlBuilder().xclose();
}
}
}

这样更简洁,只需要扩展你关心的builder,并构建你定制的实现。

另外toolbar被完全重构,但是这个实现被隐藏在ToolbarBuilder类的背后,所以不会有影响。

最后,我探索性地增加了toolbar特性,这样可以在preferences配置表关联到不同的toolbars。 这个特性能够用来动态构造toolbar。这将使开发者很简单地通过preferences来定义一个定制的toolbar。 例如,一个toolbar当使用Limit定制不包含最后一页按钮,或者另一个toolbar不包含rows displayed... 如果你要定制的就是这些东西而不需要别的新的特性,你最好等待一两个星期直到我实现完成。

1.4. 新的表的showTitle属性

TableTag新的showTitle属性用来确认是否现实title,这是一个boolean值默认为true。

1.5. Limit现在能使用State特性

Limit特性为了使用State特性,你需要使用TableLimitFactory的带有state的构造函数,当使用state 特性时,你应该提供唯一的tableId(本例为presidents),带有state的构造函数同时也需要这个tableId。

		Context context = new HttpServletRequestContext(request);
LimitFactory limitFactory = new TableLimitFactory(context, presidents, TableConstants.STATE_PERSIST, null);
Limit limit = new TableLimit(limitFactory);

1.6. 新的列的filterOptions属性/FilterOption接口

TableTag新的filterOptions属性,能够接受一个filter options的集合,这个集合中的每个bean都实现FilterOption的 接口。被用来和filterCell=droplist结合,当使用Limit时使用定制droplist时非常有用。

1.7. 导出EXCLE文件时的本地语言的支持

默认的XlsView使用UTF-16编码,这样能够支持对于双字节语言导出。如果要使用unicode,你可以设置 ExportTag的新的encoding属性,这个属性接受的值为:UTF和UNICODE。

1.8. 删除Compact视图的title的style

当使用compact视图是我硬编码了表的title,这是一个bug。只需要通过CSS的titleRow属性style(或移走)title。

1.9. TableModel现在变为接口

TableModel现在变为接口,这只对TableAssembler产生影响。然而,正如下面提到的,使用Java代码来组装一个表将更容易。

1.10. TableAssembler整合到TableModel

当使用Java代码来组装一个表将更容易:

		TableModel model = new TableModelImpl(context);

Table table = new Table(model); table.setItems(presidents); table.setAction("assembler.run"); table.setTitle("Presidents"); table.setShowTooltips(Boolean.FALSE); model.addTable(table);

Row row = new Row(model); row.setHighlightRow(Boolean.FALSE); model.addRow(row);

Column columnName = new Column(model); columnName.setProperty("fullName"); columnName.setIntercept((AssemblerIntercept.class).getName()); model.addColumn(columnName);

Column columnNickName = new Column(model); columnNickName.setProperty("nickName"); model.addColumn(columnNickName);

Object view = model.assemble();

1.11. 重命名FilterSet.getValue()方法

FilterSet.getValue()方法被Deprecated,重命名为FilterSet.getFilterValue()。

1.12. 删除TableTag的onsubmit

onsubmit被删除,因为javascript被表的所有actions使用。

1.13. 总计导出

PDF和XLS现在包含总计导出,你只需要和平常一样设置Calc特性。

1.14. 导出错误-Response头修改

过滤器的response头应该能更好地适应不同环境,在response头后添加:

response.setHeader("Cache-Control", "must-revalidate, post-check=0,pre-check=0");

1.15. 列标签autoGenerateColumns的Preferences

autoGenerateColumns属性现在可以在Preferences文件中配置,可以使用别名来避免全路径引用。

1.16. 自动转换参数

Registry能够接受null、String、List或者Array作为参数,Registry将把这些转换成String[]。

1.17. 表的bufferView属性

表的bufferView属性,默认为true将使用视图的默认buffer。如果不需要使用buffer可以设置为false。

1.18. eXtremeTable的AJAX特性

当使用eXtremeTable API来通过JAVA代码来创建表时,现在可以结合AJAX技术来生成视图。这意味着 当navigate(比如:翻页)时不需要刷新web页,这令人非常兴奋,关于这个特性的更多的文档将会出来。开发 者能够更好地测试并使用这个特性,这个特性的真正hook是表的onInvokeAction属性,它使得javascript方法 能够被invoked。AJAX整合一个最强大的地方是它不需要整合。下一步是使eXtremeTable有一个清晰并且易于使用的API, 这意味着你可以使用你感兴趣的AJAX技术因为eXtremeTable没有整合一个特定的技术。现在你可以通过CVS得到eXtremeSite代码, 它展示了一个使用AJAX的实例,它现在使用HSQL所以只需要下载并直接运行。请暂时不要向我询问更多的文档,我现在正在整理 并将尽可能快的发布出来。

posted on 2006-03-21 10:18 Lucky 阅读(1114) 评论(0)  编辑  收藏 所属分类: extremeComponents


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 
<2006年3月>
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

随笔分类(125)

文章分类(5)

日本語

搜索

积分与排名

最新随笔

最新评论