selectonemenu jsf on objects with converter -


here selectonemenu

<h:selectonemenu value="#{bean.myobject}" >     <f:ajax render="componenttorender" listener="#{bean.onselect}"/>     <f:converter converterid="myobjectconverter" />     <f:selectitem itemlabel="none" itemvalue="#{null}" />     <f:selectitems value="#{bean.objects}" var="object" itemvalue="#{object}" itemlabel="#{object.name}" /> </h:selectonemenu> 

and converter

@facesconverter("myobjectconverter") public class myobjectconverter implements converter{      private list<myobject> objects;      public myobjectconverter(){         this.objects = mycontroller.getallmyobjects();     }      public object getasobject(facescontext context, uicomponent component, string value) {         if(!stringutils.isinteger(value)) {             return null;         }         return this.getmyobject(value);     }      public string getasstring(facescontext context, uicomponent component, object value) {         if(value == null) {             return null;         }         return string.valueof(((myobject) value).getid()).tostring();     }      public myobject getmyobject(string id) {         iterator<myobject > iterator = this.objects.iterator();         while(iterator.hasnext()) {             myobject object = iterator.next();              if(object.getid() == integer.valueof(id).intvalue()) {                 return object;             }         }         return null;     }  } 

the problem ajax listener never called , component never rendered. there wrong converter or selectonemenu? follow example , can't figure mistake out.

btw : simple method in bean

public void onselect() {     system.out.println(this.myobject);     if(this.myobject != null) {         system.out.println(this.myobject.getname());     } } 

i had problem , changed selected value object id. here want make work objects because know it's possible.

thanks

i have solution. had override "equals" method in myobject class!

thanks.

edit: code

@override public boolean equals(object obj) {     if(this.id == ((myobject) obj).id) {         return true;     }else {         return false;     } } 

Comments