`
Elvin.Chu
  • 浏览: 14947 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

javax.faces.model.SelectItem能用set展示数据吗?No

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

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);
	}

}

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

@Test
public 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
	}

    以上总结比较粗糙,仅做参考。
0
0
分享到:
评论

相关推荐

    javax.faces-2.2.0.jar

    javax.faces.jar的高版本在国内网站几乎找不到,因为在研究richfaces 和primefaces,文档中说需要用到javax.faces-2.1.28或者更高版本,无奈百度搜索不到,只有想法在谷歌找,特地分享出来,想要更高版本 联系我!

    javax.jms.jar

    Classes contained in javax.jms.jar: javax.transaction.xa.XAResource.class javax.jms.BytesMessage.class javax.jms.Message.class javax.jms.JMSException.class javax.jms.Destination.class javax.jms....

    javax.persistence.jar

    Files contained in javax.persistence.jar: META-INF/MANIFEST.MF javax.persistence.Access.class javax.persistence.AccessType.class javax.persistence.AssociationOverride.class javax.persistence....

    javax.jms.jar下载

    javax.jms.BytesMessage.class javax.jms.Connection.class javax.jms.ConnectionConsumer.class javax.jms.ConnectionFactory.class javax.jms.ConnectionMetaData.class javax.jms.DeliveryMode.class javax.jms....

    javax.faces-api-2.2.jar

    在搭建spring4.3源码阅读环境的时候,spring-web项目报错,发现是少了javax.faces-api-2.2.jar文件,引入此文件可解决spring-web项目报错问题。

    javax.faces-2.1.12.jar

    很难找的jar包下载,绝对仅有!放心下载!

    com.springsource.javax.faces-1.2.0.08.jar

    jar包,官方版本,自测可用

    com.springsource.javax.faces-1.2.0.09.jar

    jar包,官方版本,自测可用

    javax.jar 包免费下载

    javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar ...

    Java Server Faces API 组件标签 API Reference 速查手册

    Java Server Faces API 组件标签 API Reference 速查手册 HTML_BASIC RenderKit javax.faces.Command javax.faces.Button javax.faces.Link javax.faces.Data javax.faces.Table javax.faces.Form javax.faces...

    javax.mail-1.4.4.jar

    通过java扩展包javax.mail-1.4.4.jar实现邮件发送功能。 import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart...

    javax.ejb.jar下载

    Files contained in javax.ejb.jar: META-INF/MANIFEST.MF javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax....

    javax.servlet.jar下载

    Files contained in javax.servlet.jar: META-INF/MANIFEST.MF javax/servlet/http/LocalStrings.properties javax.servlet.http.HttpSessionBindingListener.class javax.servlet....

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    javax.servlet的jar包,解决找不到javax.servlet.*等问题的!欢迎下载!!

    javax.jms包,sun的JMS接口规范包,版本1.1

    javax.jms包,sun的JMS接口规范包 2018年6月4日17:05:30

    javax.ejb.rar

    META-INF / maven / org.glassfish.main.ejb / javax.ejb / pom.properties META-INF / maven / org.glassfish.main.ejb / javax.ejb / pom.xml javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout....

    javax.ws.rs-api-2.0.1-API文档-中文版.zip

    赠送jar包:javax.ws.rs-api-2.0.1.jar; 赠送原API文档:javax.ws.rs-api-2.0.1-javadoc.jar; 赠送源代码:javax.ws.rs-api-2.0.1-sources.jar; 赠送Maven依赖信息文件:javax.ws.rs-api-2.0.1.pom; 包含翻译后...

    javax.mail-1.6.2-API文档-中英对照版.zip

    赠送jar包:javax.mail-1.6.2.jar; 赠送原API文档:javax.mail-1.6.2-javadoc.jar; 赠送源代码:javax.mail-1.6.2-sources.jar; 赠送Maven依赖信息文件:javax.mail-1.6.2.pom; 包含翻译后的API文档:javax.mail...

    javax.servlet-3.0.0.v201112011016-API文档-中文版.zip

    赠送jar包:javax.servlet-3.0.0.v201112011016.jar; 赠送原API文档:javax.servlet-3.0.0.v201112011016-javadoc.jar; 赠送源代码:javax.servlet-3.0.0.v201112011016-sources.jar; 赠送Maven依赖信息文件:...

    javax.servlet-api-3.1.0.jar中文文档.zip

    api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发手册,使用手册,...

Global site tag (gtag.js) - Google Analytics