javax.faces.model.SelectItem能用set展示数据吗?No
[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相关推荐
- jsf项目启动报:java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet的错误,尝试了很多的很多的方法,也无疾而终. 解决方法: (1) ...
- 导入工程后 报错 The import javax.faces cannot be resolved 解决办法
这个异常The import javax.faces cannot be resolved是因为确少引用的jar包,引入[ jsf-api.jar]
- 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 ...
- javax.faces.webapp.FacesServlet
web项目创建后执行报:javax.faces.webapp.FacesServlet java.lang.ClassNotFoundException: javax.faces.webapp.Fac ...
- javax.faces.FacesException: Unable to find CDI BeanManager的解决方法
最近使用weblogic发布war包遇到了一个异常 javax.faces.FacesException: Unable to find CDI BeanManager 这个异常目前本人只在在webl ...
- java中的model_Java程序员必看之springmvc中的Model对象在重定向中的数据
原标题:Java程序员必看之springmvc中的Model对象在重定向中的数据 在springmvc框架中,一个handler方法中的参数可以内置接收Model类型的对象,主要用于存储数据之用,主要 ...
- 4、Flutter - 控件基础 (二)ListView 列表展示数据、布局
ListView 列表展示数据.布局 接上篇,几点注意事项与说明 1.创建工程项目的时候,存放路径不要有中文,有中文会有警告,而且后面可能会有一些未知的问题. 如果有中文路径,创建完工程移动工程位置的 ...
- 自我规范模版A要求2:展示数据列表 (无从表)和导出数据页面
名称: 展示数据列表 (无从表)和导出页面 路径要求: /pages/${entityClassName}/XXX_list.zul /pages/${entityClassName}/XXX_lis ...
- 如何在Fragment碎片中展示数据
//Fragment碎片展示数据 import android.os.Bundle; import android.support.annotation.NonNull; import android ...
最新文章
- 纸上原型设计 VS 桌面原型工具设计,你更喜欢谁?
- 04需求工程软件建模与分析阅读笔记之四
- HTML/BODY的背景渲染原理
- Html5 Canvas斗地主游戏
- 白银T+D [Ag(T+D)]业务介绍
- c语言人事档案管理系统简单的,人事档案统一标准管理系统c语言.doc
- 网易编程题-操作序列
- 寻找大富翁(堆排序)
- Vue中解决移动端点击300毫秒延迟的问题
- vscode终端中文乱码问题的解决方案合集c++
- 移远NBIOT BC95-B5使用CoAP协议接入华为IoT平台第一篇
- win10 如何设置绿色保护色?
- Word文件忘记保存,恢复文件信息的方法
- 杰理之无线MIC【篇】
- 手摸手,带你用vue撸后台 系列一(基础篇)
- 嵌入式的汉字原来是这样显示的?
- 鸿蒙和iqoo系统谁强,鸿蒙系统发布会,小米11降500,iQOO、酷派、魅族、惠普发布新品...
- 【新知实验室】手把手实现腾讯云音视频应用
- 网页转换成电脑exe软件简单办法
- 终于等到了!十位Java架构师整理的“阿里P7”养成计划
热门文章
- 《浪潮之巅》阅读笔记
- matlab修图美白,用PS通道对头像照片祛斑美白修图的教程
- Android技术点笔记--(安装应用和卸载应用广播)
- Enbean Ebean ORM JDBC Suport
- unity3d开发 打飞机小游戏(三)(飞机子弹设置)
- python自动创建sqlserver表并上传dataframe到创建的表中
- 记一次windows蓝屏的解决方法——快速启动惹的祸
- 操作系统形式化验证实践教程(11) - 结构化证明语言Isar
- 朗逸发动机型号css和ea211的区别,css发动机和ea211发动机有什么区别
- 鸿蒙os2.0 公测,首批鸿蒙OS 2.0开启大规模公测,普通用户也能尝鲜