[size=medium] 在JSF的项目中,我们知道javax.faces.model包下的SelectItem类可以用数组或者List的实现类来封装数据并展示。当下拉框的数据要展示排序后并且没有重复值的情况时,我们难免会想到把SelectItem封装到Set集合中。经过相关测试后发现java.util包下的Set不能封装SelectItem,先放上修改后的SelectItem代码,再一一分析:[/size]

import org.apache.commons.lang.builder.CompareToBuilder;import org.apache.commons.lang.builder.EqualsBuilder;import org.apache.commons.lang.builder.HashCodeBuilder;

/** * @author Zhengjiang Chu * @version 2.0 */public class SelectItem extends javax.faces.model.SelectItem implements      Comparable<Object> {    /**    * serialVersionUID long   */   private static final long serialVersionUID = -11786629707360771L;

  public SelectItem() { }

   public SelectItem(Object value) {     super.setValue(value);        super.setLabel(value.toString()); }

   public SelectItem(Object value, String label) {       super.setValue(value);        super.setLabel(label);    }

   @Override    public boolean equals(Object object) {        return EqualsBuilder.reflectionEquals(this, object);  }

   @Override    public int hashCode() {       return HashCodeBuilder.reflectionHashCode(this);  }

   @Override    public int compareTo(Object obj) {        return CompareToBuilder.reflectionCompare(this, obj); }

}

[size=medium] javax.faces.model.SelectItem没有自己的equals方法,我们知道封装在Set的数据必须具有可比性,所以没有equals和hashCode的SelectItem无法用Set存储。集合中有个contains方法,传入一个对象,如何集合中可以找到此对象返回true反之返回fasle,当我们想在Set集合中判断指定的SelectItem是否存在时就少不了compareTo方法。
以下是个简单的demo:[/size]

@Testpublic void testSelectItemSet(){//import javax.faces.model.SelectItem; Set<SelectItem> set = new TreeSet<SelectItem>(); SelectItem item = new SelectItem("aaa");   SelectItem item1 = new SelectItem("aaa");  SelectItem item2 = new SelectItem("bbb");  SelectItem item3 = new SelectItem("123");  SelectItem item4 = new SelectItem("123");  SelectItem item5 = new SelectItem("bbb");  SelectItem item6 = new SelectItem("caa");  set.add(item);    set.add(item1);   set.add(item2);   set.add(item3);   set.add(item4);   set.add(item5);   set.add(item6);   System.out.println(set.size());   //java.lang.ClassCastException: javax.faces.model.SelectItem cannot be cast to java.lang.Comparable   }

[size=medium]以上总结比较粗糙,仅做参考。[/size]

javax.faces.model.SelectItem能用set展示数据吗?No相关推荐

  1. jsf项目启动报:java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet

    java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet的错误,尝试了很多的很多的方法,也无疾而终. 解决方法: (1)   ...

  2. 导入工程后 报错 The import javax.faces cannot be resolved 解决办法

    这个异常The import javax.faces cannot be resolved是因为确少引用的jar包,引入[ jsf-api.jar]

  3. FacesServlet (Java EEWTP/JSF问题的解决--java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet

    转自:http://babyblue2004.bokee.com/5733663.html 这几日在www.eclipse.org上看了一篇文章(http://www.eclipse.org/webt ...

  4. javax.faces.webapp.FacesServlet

    web项目创建后执行报:javax.faces.webapp.FacesServlet java.lang.ClassNotFoundException: javax.faces.webapp.Fac ...

  5. javax.faces.FacesException: Unable to find CDI BeanManager的解决方法

    最近使用weblogic发布war包遇到了一个异常 javax.faces.FacesException: Unable to find CDI BeanManager 这个异常目前本人只在在webl ...

  6. java中的model_Java程序员必看之springmvc中的Model对象在重定向中的数据

    原标题:Java程序员必看之springmvc中的Model对象在重定向中的数据 在springmvc框架中,一个handler方法中的参数可以内置接收Model类型的对象,主要用于存储数据之用,主要 ...

  7. 4、Flutter - 控件基础 (二)ListView 列表展示数据、布局

    ListView 列表展示数据.布局 接上篇,几点注意事项与说明 1.创建工程项目的时候,存放路径不要有中文,有中文会有警告,而且后面可能会有一些未知的问题. 如果有中文路径,创建完工程移动工程位置的 ...

  8. 自我规范模版A要求2:展示数据列表 (无从表)和导出数据页面

    名称: 展示数据列表 (无从表)和导出页面 路径要求: /pages/${entityClassName}/XXX_list.zul /pages/${entityClassName}/XXX_lis ...

  9. 如何在Fragment碎片中展示数据

    //Fragment碎片展示数据 import android.os.Bundle; import android.support.annotation.NonNull; import android ...

最新文章

  1. 纸上原型设计 VS 桌面原型工具设计,你更喜欢谁?
  2. 04需求工程软件建模与分析阅读笔记之四
  3. HTML/BODY的背景渲染原理
  4. Html5 Canvas斗地主游戏
  5. 白银T+D [Ag(T+D)]业务介绍
  6. c语言人事档案管理系统简单的,人事档案统一标准管理系统c语言.doc
  7. 网易编程题-操作序列
  8. 寻找大富翁(堆排序)
  9. Vue中解决移动端点击300毫秒延迟的问题
  10. vscode终端中文乱码问题的解决方案合集c++
  11. 移远NBIOT BC95-B5使用CoAP协议接入华为IoT平台第一篇
  12. win10 如何设置绿色保护色?
  13. Word文件忘记保存,恢复文件信息的方法
  14. 杰理之无线MIC【篇】
  15. 手摸手,带你用vue撸后台 系列一(基础篇)
  16. 嵌入式的汉字原来是这样显示的?
  17. 鸿蒙和iqoo系统谁强,鸿蒙系统发布会,小米11降500,iQOO、酷派、魅族、惠普发布新品...
  18. 【新知实验室】手把手实现腾讯云音视频应用
  19. 网页转换成电脑exe软件简单办法
  20. 终于等到了!十位Java架构师整理的“阿里P7”养成计划

热门文章

  1. 《浪潮之巅》阅读笔记
  2. matlab修图美白,用PS通道对头像照片祛斑美白修图的教程
  3. Android技术点笔记--(安装应用和卸载应用广播)
  4. Enbean Ebean ORM JDBC Suport
  5. unity3d开发 打飞机小游戏(三)(飞机子弹设置)
  6. python自动创建sqlserver表并上传dataframe到创建的表中
  7. 记一次windows蓝屏的解决方法——快速启动惹的祸
  8. 操作系统形式化验证实践教程(11) - 结构化证明语言Isar
  9. 朗逸发动机型号css和ea211的区别,css发动机和ea211发动机有什么区别
  10. 鸿蒙os2.0 公测,首批鸿蒙OS 2.0开启大规模公测,普通用户也能尝鲜