注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

白小博

Morning的脚印,一步,一步……

 
 
 

日志

 
 

L-20070305  

2007-03-05 20:07:00|  分类: L-实习日志 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

2007-3-5

小白今天上午用MyFaces做了一个排序的小组件,对页面上的MENU显示的设备,按照不同的条件来排序。
思路:
小白MyFaces提供了一个控件,其实就是,不过MyFaces的这个表格代有排序、分页等好多功能。在今天这个实例中,只用的了它的排序功能。而且这个表格的排序与表格的显示是可以分离的,正好可以用在我们项目的MENU中来。
小白在以前的TRAP表格显示中,已经用到了排序功能,而且当时从一个例子中学会了一个好的方法,将LIST排序的功能抽象出来,形成了一个抽象类AbstractSortableList,参见2007-2-28的日志。
小白通过这个功能之后,就可以根据不同的关键字来对设备列表进行排序了。

实现: 

页面组件代码

 <t:dataTable id="table_menuSorter" value="#{menuMgrBean.nameMenu}"
  var="ads" sortColumn="#{menuMgrBean.sort}"
  sortAscending="#{menuMgrBean.ascending}" rows="1" width="100px"
  style="text-align:center; height:16px;">
  <t:column>
   <f:facet name="header">
    <t:commandSortHeader columnName="state" arrow="false"
     immediate="false">
     <t:graphicImage value="images/menuSorter/sorter_state.gif"
      border="0" title="Sort by Devices' State" />
    </t:commandSortHeader>
   </f:facet>
  </t:column>
  <t:column>
   <f:facet name="header">
    <t:commandSortHeader columnName="name" arrow="false"
     immediate="false">
     <t:graphicImage value="images/menuSorter/sorter_name.gif"
      border="0" title="Sort by Devices' Name" />
    </t:commandSortHeader>
   </f:facet>
  </t:column>
  <t:column>
   <f:facet name="header">
    <t:commandSortHeader columnName="type" arrow="false"
     immediate="false">
     <t:graphicImage value="images/menuSorter/sorter_type.gif"
      border="0" title="Sort by Devices' Type" />
    </t:commandSortHeader>
   </f:facet>
  </t:column>
  <t:column>
   <f:facet name="header">
    <t:commandSortHeader columnName="ip" arrow="false" immediate="false">
     <t:graphicImage value="images/menuSorter/sorter_ip.gif" border="0"
      title="Sort by Devices' IP" />
    </t:commandSortHeader>
   </f:facet>
  </t:column>
 </t:dataTable>

JAVA程序代码(部分)

 protected void sort(final String column, final boolean ascending)
 {
  logger.info("[ACTION] - " + column + " : "
    + (ascending ? "ASC" : "DES"));
  Comparator comparator = new Comparator()
  {
   public int compare(Object o1, Object o2)
   {
    AgentDelegate t1 = (AgentDelegate) o1;
    AgentDelegate t2 = (AgentDelegate) o2;
    if (column == null)
    {
     return 0;
    }
    if (column.equals("state"))
    {
     return ascending ? Byte.valueOf(t1.getStatus()).compareTo(
       Byte.valueOf(t2.getStatus())) : Byte.valueOf(
       t2.getStatus()).compareTo(
       Byte.valueOf(t1.getStatus()));
    } else if (column.equals("type"))
    {
     return ascending ? Integer.valueOf(t1.getDeviceType())
       .compareTo(Integer.valueOf(t2.getDeviceType()))
       : Integer.valueOf(t2.getDeviceType()).compareTo(
         Integer.valueOf(t1.getDeviceType()));
    } else if (column.equals("name"))
    {
     return ascending ? t1.getName().compareTo(t2.getName())
       : t2.getName().compareTo(t1.getName());
    } else if (column.equals("ip"))
    {
     return ascending ? t1.getIP().compareTo(t2.getIP()) : t2
       .getIP().compareTo(t1.getIP());
    } else
     return 0;
   }
  };
  Collections.sort(nameList, comparator);
 }

这样就实现了对设备列表的多功能排序。
还做了几个小图标:

L-20070305 - morningbzy - morningbzy 的博客

  评论这张
 
阅读(27)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017