启天论坛软件硬件技术Java技术 → jsf转换器中用到的hashCode和equals


  共有242人关注过本帖树形打印

主题:jsf转换器中用到的hashCode和equals

帅哥,在线噢!
junsan
  1楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 总掌门
等级:管理员 帖子:11764 积分:7955 威望:757 精华:24 注册:2005-7-14 15:13:00
jsf转换器中用到的hashCode和equals  发帖心情 Post By:2008-10-28 13:59:00



作者:yourenyouyu2008

转换器一般是要将页面提交的字符串转换成对象(object)

public Object getAsObject(FacesContext context, UIComponent component,
   String value) {

  int index = value.indexOf(':');
 
  return new ToolBarItem(value.substring(0, index), value.substring(index + 1));
 }

而页面显示的对象却是另一个对象,虽然他们的数据是相同的,但hascode却不同,这样转换后的对象是没法更新以前的对象的,特别是list中的,会报无效的表达式错误。但我们给ToolBarItem对象实现hashCode,equals方法后,相同的内容通过转换器转换出来的就是同一对象了,这样就可以更新了。

public ToolBar() {
  ToolBarItem item = new ToolBarItem();
  item.setIcon("create_folder");
  item.setLabel("Create Folder");
  items.add(item);
  item = new ToolBarItem();
  item.setIcon("create_doc");
  item.setLabel("Create Doc");
  items.add(item);
  item = new ToolBarItem();
  item.setIcon("find");
  item.setLabel("Find");
  items.add(item);

 

 

 public class ToolBarItem {
private String icon;
private String label;
private String iconURI;

public int hashCode() {
 final int prime = 31;
 int result = 1;
 result = prime * result + ((icon == null) ? 0 : icon.hashCode());
 result = prime * result + ((label == null) ? 0 : label.hashCode());
 return result;
}

 

public boolean equals(Object obj) {
 if (this == obj)
  return true;
 if (obj == null)
  return false;
 if (getClass() != obj.getClass())
  return false;
 final ToolBarItem other = (ToolBarItem) obj;
 if (icon == null) {
  if (other.icon != null)
   return false;
 } else if (!icon.equals(other.icon))
  return false;
 if (label == null) {
  if (other.label != null)
   return false;
 } else if (!label.equals(other.label))
  return false;
 return true;
}

 



主页:http://www.rsky.com.cn

培训论坛:http://www.javastar.org

Blog:http://blog.csdn.net/junnef

技术交流QQ:334620162

培训咨询QQ:66883074

合租咨询QQ:631066985

MSN:junsanjin@hotmail.com

Emial:junsanjin@263.net

传真:(010)950507转747393
启天合组-专业合租空间提供商 支持(0中立(0反对(0回到顶部