[ec] extreme Table 版本跟进发布区

[ec] extreme Table 版本跟进发布区

说明
extreme Table 是个很不错的table tag,打算记录底它的版本发布 change Log :)


它的RoadMap :
http://extremecomponents.org/extremesite/public/roadMap.jsp
以往本BLOG介绍: http://www.blogjava.net/davidxu/archive/2005/08/09/9683.aspx



我们从这里开始:

[1.0.0-M2-A2]
1.0.0-M2-A2 - by 官方
  • Able to mix the ColumnTag and the ColumnsTag. Will need to use the method
    model.getColumnHandler().addAutoGenerateColumn(column);
  • Every attribute of every tag will accept an EL Expression
  • Will accept a Set for the collection now


部分使用说明 --by david xu

1  table 新增加var属性,支持定义bean name (可选择),可以不用${collectionName.memberName}这样难以理解的语法.
    用官方的话就是
    "Added TableTag var attribute. Used (optionally) as the name of the variable to hold the current bean. "
  

< ec:table
    collection
= " humanList "
    action
= " ${pageContext.request.contextPath}/index.jsp "
    imagePath
= " ${pageContext.request.contextPath}/images/table/*.gif "
    cellpadding
= " 1 "
    saveFilterSort
= " true "
    var
= " human "
    title
= " 我的第一个tag table " >
ec:table>
$
{human.name} 取得



[1.0.1-M2]
1.0.1-M2 release  by 官方

1. Things that changed and need to be aware of:

  • The ColumnTag exportable attribute has been removed
    • Replaced with the viewsAllowed and the viewsDenied attributes (see items 3 and 4)
  • Changed Cell interface
    • new interface ->public void init(BaseModel model, Column column);
    • Matches the View interface for consistency
    • The rowcount is part of the new Row bean. Can retrieve the rowcount by doing a model.getRowHandler().getRow().getRowCount()
  • Changed View interface
    • new interface -> public void body(BaseModel model, Column column);
    • Matches the Cell interface for consistency
    • Can get the column position by doing column.isFirstColumn() and column.isLastColumn()
  • New TableTag attributes to replace the deprecated collection attribute
    • The collection attribute has been deprecated in favor of three new attributes. The attributes are call tableId, items, and var
    • Read the full discussion for more information
  • Moved the element back on the Cell for the FilterCell.
    • If you modified the HtmlView, and specifically the filter row, then remove the element in the View.

2. New RowTag with cooresponding Row Bean

  • Able to do row level javascript onmouseover, onmouseout, and onclick
  • Ability to do row level highlighting. See stylesheet change (below) for proper formating.
  • Moved the stylesheet class attribute from the column () to the row ()

3. New ColumnTag attribute viewsAllowed

  • Can specify whether the column should be used for the current view. The views include html, pdf, xls, csv, plus any custom views.
  • If you specify a given view (or views), then only that view (or views) will use the column
  • For example you can specify viewsAllowed="pdf" which will use the column for the PDF export, but not any other export or default html View
  • Replaces the ColumnTag exportable attribute

4. New ColumnTag attribute viewsDenied

  • Can specify whether the column should not be used for the current view. The views include html, pdf, xls, csv, plus any custom views
  • If you specify a given view (or views), then only that view (or views) will not use the column
  • For example you can specify viewsDenied="html" which will not use the column for the html View, but will for all the exports
  • Replaces the ColumnTag exportable attribute

5. Enhancements

  • Every attribute of every tag will accept an EL Expression
  • Will accept a Set for the collection now
  • Confirmed to work with a RowSetDynaClass (if send as List)
  • Able to mix the ColumnTag and the ColumnsTag. Will need to use the method model.getColumnHandler().addAutoGenerateColumn(column);
  • Improved the default stylesheet
    • My initial intentions were to just change the stylesheet to work with the row highlighting, but I ended up tweaking it enough that now it just works better. For instance if you have some filters turned off then it seamlessly flows with the statusbar because it no longer uses cellspacing. If you use the new stylesheet be sure to remove the table.cellspacing=2 from your extremecomponents.properties file.

6. Bugs Fixed

  • Fixed Rows Displayed bug
    • The Rows Displayed was not working correctly with the Show All under certain conditions
    • Can set the median and max values in the extremecomponents.properties. The default values are table.medianRowsDisplayed=50 and table.maxRowsDisplayed=100, respectively

部分使用说明 --by david xu
1、TableTag 的改动
      collection attribute
不再赞成使用,可以使用tableId, items, and var 取而代之

< ec:table 
    items
= " customerList "
        tableId
= " customer "
        var
= " customer "
    title
= " customerList "
        …………

>
…………
ec:table>


2、ColumnTag 新属性的用法viewAllowed,viewsDenied
      支持view包括:
html, pdf, xls, csv以及自定的view

     viewsAllowed = " pdf "      // 说明:只允许在pdf view 中
      viewsAllowed = " html,xls "   // 也可以用,分隔

3、 Cell interface 的改动
       通过model.getRowHandler().getRow().getRowCount() 返回 rowcount
4、新增RowTag 
    
< ec:row highlightRow = " true "  onclick = " alert('david') "   >
   
< ec:column />
   
< ec:column />
   
< ec:column />
   …………
ec:row>

5、set ,RowSetDynaClass 的支持
<%
    List customerList 
=   new  ArrayList();
    LazyDynaBean temp 
=   new  LazyDynaBean();
    temp.set(
" code " " 001 " );
    temp.set(
" name " " david xu " );
    customerList.add(temp);
    request.setAttribute(
" customerList " , customerList); 
%>

   …………
  …………


6、Totalling Columns
< ec:table
        totalTitle
= " 合计 "
>       
   
< ec:column property = " salary "  showTotal = " true " />
ec:table>



New and Noteworthy 1.0.1-M3

This build represents a massive refacoring of the handler code and includes a new limit package. I believe the state of the code is the best it has ever been and in general has really gone to a new level. This was initially sparked by a refactoring of the Pagination (now Limit) and Rows Displayed features but then trickled down into the handler code and also resulted in a new Limit and LimitFactory.

Be sure to give yourself time to move to this release as you will need to fix your custom cells and views. I had to move some classes to different packages as things changed internally. The changes will make working with the eXtremeTable much easier and were unavoidable.

1. Things that changed and need to be aware of:

  • The Show All is no longer an option in the Rows Displayed droplist. It was confusing as the median and max rows would sometimes appear and sometimes go away. It was way to buggy also...you could filter the rows, select show all, and the hit clear. At that point you would display all the rows.
  • The BaseModel moved from the base package to the core package as there is no base package left.
  • The Limit, CollectionOfBeans, CurrentCollectionBean moved to the BaseModel.
  • org.extremecomponents.table.base.ModelUtils --> (moved) org.extremecomponents.table.core.ExportFilterUtils
  • The TableTag attribute rowsDisplayed="0" no longer has any meaning. If you would like to show all the rows then remove the pagination with the TableTag attribute showPagination="false". The reason for the change is because the rows displayed was reworked and the meaning dropped. Also, I could tell from code examples that many people were confused by the attribute and its meaning as both the showPagination="false" and rowsDisplayed="0" were used together. I would prefer one clear way to display all the rows.

2. Limit and LimitFactory

Basically you just build a Limit object and it self populates with everything that you need to figure out the sorting, filtering, rowStart, rowEnd, page, currentRows and totalRows. You used to have to deal with Strings and Maps versus now you work with simple intuitive objects and ints. I also use the Limit object internally with a different factory.

This is all you have to do:

 Limit limit = LimitFactory.createInstanceOfLimit(request, tableId);
 LimitFactory.setLimitFilterAndSortAttr(limit);

 //once you know the total rows
 LimitFactory.setLimitPageAndRowAttr(limit, DEFAULT_ROWS_DISPLAYED, totalRows);

The example demonstrates how to work in a Controller (Spring) or Action (Struts).

Then in your JSP set the callbacks to point to the LimitCallback.

<ec:table 
      retrieveRowsCallback="org.extremecomponents.table.callback.LimitCallback"
      filterRowsCallback="org.extremecomponents.table.callback.LimitCallback"
      sortRowsCallback="org.extremecomponents.table.callback.LimitCallback"
      ...
  >

3. Enhancements

  • If you hard coded in any of the filter parameters then be sure to look at the TableContants class to see how they changed. The URL is more of a code than something you can read now.

4. Bugs Fixed

  • Fixed the FOP errors messages associated with the PDF Export View.
  • If the filter is invoked with no filter criteria the table no longer tries to match empty results. The effect before was the table would show no results, and now just remains the same.
  • Removed org.extremecomponents.table.tag.TableTagExtraInfo

你可能感兴趣的:([ec] extreme Table 版本跟进发布区)