`

jmesa之FilterMatcher

阅读更多
Jmesa本来已经讲得差不多了,但是还有一些细节可能需要完善一下,下面讲讲FilterMatcher,
FilterMatcher主要针对的是条件过滤,这里要解决的问题主要有两个,一是条件查询的时候需要下拉菜单,二是解决一些格式匹配问题,如不区分大小写,日期格式等。

下拉菜单问题解决起来很简单,首先实现一个包含下拉菜单的类:

public class NameDroplistFilterEditor extends DroplistFilterEditor {
   @Override
   protected List<Option> getOptions()  {
      List<Option> options = new ArrayList<Option>();
      options.add(new Option("fans","fans"));
      options.add(new Option("fansof", "fansof"));
      return options;
   }
}


然后把它赋给tableFacade:

........
HtmlColumn name = row.getColumn("name");
name.setTitle("名字");
name.getFilterRenderer().setFilterEditor(new NameDroplistFilterEditor ());
.........


最后在JSP的标签中引入:

.........
<jmesa:htmlColumn property="name" filterEditor="com.util.NameDroplistFilterEditor " />
........


这样,在名字的条件查询栏中,就会有相应的下拉菜单了。

第二个问题的解决可能会麻烦一点,它主要提供的是过滤的一种策略,解决的方式有两种,一种是直接在JAVA代码中使用实现了FilterMatcher的类,或者在JSP的标签中使用实现了FilterMatcherMap的类。
默认的过滤是区分大小写的,如果不要区分大小写,可以这样:

public class CaseFilterMatcher implements FilterMatcher {
   public boolean evaluate(Object itemValue, String filterValue) {

      String item = StringUtils.lowerCase(String.valueOf(itemValue));
      String filter = StringUtils.lowerCase(String.valueOf(filterValue));

      if (item.contains(filter) {
            return true;
      }

      return false;
   }
}


然后将它赋给TableFacade:

......
//注意位置
tableFacade.addFilterMatcher(new MatcherKey(String.class, "name"),new CaseFilterMatcher());
...


这样就可以了,如果要使用标签的方式,就需要实现FilterMatcherMap,在此不再多说,详细说明可见官方资料。
分享到:
评论
1 楼 sinnnnnnnnnnn 2011-09-10  
我想问下,如果是
options.add(new Option("fans","fans"));  
options.add(new Option("fanssssssssss", "fanssssssssss")); 
这样的话,如果我下拉选择 fans,因为是jmesa默认是模糊查询
fanssssssssss这个查询结果也会被查不出来,怎么解决

相关推荐

    jmesa.jar jmesa.jar

    jmesa.jar jmesa.jar

    Jmesa快速指南

    最近做一个应用的时候用到了Jmesa(至于Jmesa的详细介绍,请Google),但是关于Struts2和Jmesa的资料特别少,费尽周折总算让他们两个正常运行了,现在把使用他们的一些心得写下来与大家分享

    jmesa的一个例子

    这是一个jmesa的例子 没有jar包 详情见 http://writeblog.csdn.net/PostList.aspx 初探jmesa

    jmesa-3.0.jar

    jmesa表格标签 依赖包 jmesa-3.0.jar

    jmesa-tag

    介绍ExtremeTable的下一代Jmesa,这个项目的目的是为开发者提供更有效的表格展现的API,而不是简单的TagLib。

    jmesa-2.4.4.jar

    jmesa-2.4.4.jar 有源码

    jmesa-snapshot.jar

    jmesa-snapshot.jar jmesa用到的jar

    jmesa2.3.4

    jmesa2.3.4非常好的API,推荐使用

    jmesa所需完整jar包

    jmesa 所需要的 完整jar包,非常的全

    jmesa-3.0.4.jar

    jmesa-3.0.4 最新版 供大家学习下载

    jmesa核心讲解

    jmesa 。。。。。。。。。。。。。

    jmesa使用说明文档

    这是一篇关于如何使用jmessa的说明文档

    JMESA SERVLET

    使用jmesa做的分页,导出可以导出文txt,pdf,excel等格式,采用servlet 没有使用其他的框架,对还没有学会框架的比较好理解

    jmesa 排序 过滤 例子

    官方提供的另外一种方法的实现。 有排序和过滤。 而且能支持大数据量的查询。

    jmesa war source

    jmesa-2.3_examples.war-source.zipjmesa-2.3_examples.war-source.zipjmesa-2.3_examples.war-source.zip

    jmesa-ajax

    使 jmesa支持ajax的JS源码 描述&gt;=20个字符,不支持HTML标签。

    jmesa 入门

    NULL 博文链接:https://zengguo1988.iteye.com/blog/699798

    jmesa入门实例源码

    jmesa入门实例源码

    Struts1.2+Spring2.5+Hibernate3.2+Jmesa2.4.3+Jmesatag实例2分页A

    一个Struts1.2+Spring2.5+Hibernate3.2+Jmesa2.4.3+JmesaTag实现的强大分页控件例子 里 面有action实现分页和标签实现分页2个例子 action实现的分页 包括了表头排序,导出为PDF,TXT, excel等格式 jar包和数据库...

    jmesa的源码解读(共五部分)

    jmesa源码解读 共五部分 jmesa源码解读一[包结构] jmesa源码解读二[limit包] jmesa源码解读三[core包] jmesa源码解读四[core.filter包] jmesa源码解读五[view包]

Global site tag (gtag.js) - Google Analytics