<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    幸せのちから

    平凡的世界
    看似平常實崎嶇
    成如容易卻艱辛

    定制FilterCell

    定制FilterCell


    1. 引言

    列的filterCell屬性控制過濾器如何顯示,它和cell屬性非常相像并且也是實現Cell接口。馬上要定義的是默認的和droplist這兩個過濾器cells。 默認的是一個輸入框元素而droplist是一個下拉列表元素。當然,如果你需要進行一些定制你可以插接自己的實現。

    最近,我被問到是否能夠實現一個過濾器cell,顯示已經通過別的過濾器過濾得到數據子集。答案當然是肯定的,而且這是我將在這里示范的。通常定制的 cell可以很容易被創建,這個示例將印證這點。在這個示例里last name列里顯示的將是通過first name過濾后的子集。如果沒有通過 first name過濾那么所有值都將被顯示。

    1.1. 定制Droplist過濾器Cell示例

    通常你只需要為過濾器cell實現Cell接口。然而,因為我們要創建的過濾器cell是一個下拉列表,我們可以通過擴展 FilterDroplistCell來獲得它已經提供的很多功能,FilterDroplistCell是發行包已經提供的cells之一。

    我們需要覆蓋FilterDroplistCell的唯一方法是getFilterDropList()。這是整個類的全部代碼:

    public class FilteredDroplistCell extends FilterDroplistCell {
    private static Log logger = LogFactory.getLog(FilterDroplistCell.class);

    protected List getFilterDropList(TableModel model, Column column) {
    List droplist = new ArrayList();

    String firstNameFilter = model.getLimit().getFilterSet().getValue("firstName");

    Collection beans = model.getCollectionOfBeans();
    for (Iterator iter = beans.iterator(); iter.hasNext();) {
    Object bean = iter.next();
    try {
    String firstName = BeanUtils.getProperty(bean, "firstName");
    if (StringUtils.isNotBlank(firstNameFilter) && !firstName.equals(firstNameFilter)) {
    continue;
    }

    String lastName = BeanUtils.getProperty(bean, column.getProperty());
    if ((lastName != null) && !droplist.contains(lastName)) {
    droplist.add(lastName);
    }
    } catch (Exception e) {
    logger.debug("Problems getting the droplist.", e);
    }
    }

    Collections.sort(droplist);

    return droplist;
    }
    }

    如果你比較這個類和父類,你會發現它們只有微小的區別。

    首先需要注意的是我們需要找出first name是否已經被過濾了。

    String firstNameFilter = model.getLimit().getFilterSet().getValue("firstName");

    然后我們需要判斷當前bean的first name值是否和first name過濾器值相同。如果相同,將當前的last name值 添加到droplist中。

    String firstName = BeanUtils.getProperty(bean, "firstName");
    if (StringUtils.isNotBlank(firstNameFilter) && !firstName.equals(firstNameFilter)) {
    continue;
    }

    如果last name將添加到droplist中,我們需要檢查droplist中是否已經包含了這個值。如果沒有,我們就把它添加到droplist中。

    String lastName = BeanUtils.getProperty(bean, column.getProperty());
    if ((lastName != null) && !droplist.contains(lastName)) {
    droplist.add(lastName);
    }

    為了使用這個Cell你應該在Preferences中聲明一個別名。 當然,你可以省略這步而在JSP中提供這個Cell實現類的全路徑,但是使用Preferences更簡潔。

    column.filterCell.filteredDroplist=org.extremesite.cell.FilteredDroplistCell

    在ColumnTag通過設置filterCell屬性來使用FilteredDroplistCell。

    <ec:column property="lastName" filterCell="filteredDroplist"/>

    如果不清楚Preferences和ColumnTag定義語法請參考Preferences指南。

    posted on 2006-02-24 10:24 Lucky 閱讀(544) 評論(0)  編輯  收藏 所屬分類: extremeComponents

    <2006年2月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627281234
    567891011

    導航

    隨筆分類(125)

    文章分類(5)

    日本語

    搜索

    積分與排名

    最新隨筆

    最新評論

    主站蜘蛛池模板: 亚洲视频一区二区三区| 国产免费131美女视频| 久久亚洲一区二区| 一二三四在线观看免费高清中文在线观看| 精品亚洲一区二区三区在线观看| 国产AV无码专区亚洲AWWW| 亚洲天堂福利视频| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲综合日韩中文字幕v在线| 久久99国产乱子伦精品免费| 亚洲三级电影网址| 久久亚洲精品无码av| 在线看片无码永久免费aⅴ| 羞羞视频网站免费入口| 久久精品夜色噜噜亚洲A∨| 和老外3p爽粗大免费视频| 免费在线看v网址| 亚洲色中文字幕无码AV| 亚洲av中文无码字幕色不卡 | 亚洲黄色中文字幕| 午夜国产精品免费观看| 亚洲狠狠婷婷综合久久| 亚洲人成网站在线观看青青| 韩国免费A级毛片久久| 亚洲男人第一av网站| 成人毛片18岁女人毛片免费看| 亚洲av无码专区在线电影天堂| 亚洲av无码乱码在线观看野外 | 国产视频精品免费视频| 亚洲色精品vr一区二区三区| 免费看黄的成人APP| 亚洲一本之道高清乱码| 亚洲精品99久久久久中文字幕 | 免费A级毛片无码A∨男男| 国产免费伦精品一区二区三区| 亚洲欧洲一区二区| 日本人护士免费xxxx视频| 中文成人久久久久影院免费观看| 亚洲 综合 国产 欧洲 丝袜| 国产亚洲精品bv在线观看| 亚洲视频免费在线看|