jquery - Removing items from Spring's AutoPopulatingList -


i have created dynamic form using spring autopopulatinglist , jquery. addition works charm, new items created , persisted database. issue deletion: update method gets full list, regardless of deletion of elements on browser side.

controller's update method simple that

@requestmapping(value = "/user/{id}", method = requestmethod.post) @responsebody public string updateuser(@pathvariable("id") int id, @modelattribute("user") user user, httpservletrequest request) {     userservice.update(user);     return messagesource.getmessage("user.data_updated", null, request.getlocale()); } 

user pojo implementation follows

@entity public class user implements serializable { ...  @onetomany(targetentity = language.class, fetch = fetchtype.eager, cascade = cascadetype.all) private list<language> languages = new autopopulatinglist(language.class); ... } 

the post request goes controller looks (addition, language 2 added):

languages[0].code:pl languages[0].level:fluent languages[1].code:de languages[1].level:native languages[2].code:cc languages[2].level:intermediate 

and removal(language 1 removed using jquery .remove() method):

languages[0].code:pl languages[0].level:fluent languages[2].code:cc languages[2].level:intermediate 

so communication side looks ok, user retrieved @modelattribute("user") in updateuser method still has 3 language elements, valid (that not null). suggestions? i'm using spring 3.1.1 , jquery 1.7.2 if that's relevant.

edit: client side code adding/removal of fields follows:

$.addlanguage = function()  {             var newlanguage = $('<input type="text" id="languages' + languagescounter + '.code" name="languages[' + languagescounter + '].code" class="langidentifier"/>' +                                 '<select id="languages' + languagescounter + '.level" name="languages[' + languagescounter + '].level" class="langselect">'  +                                     '<option value="basic">basic</option>' +                                     '<option value="intermediate">intermediate</option>' +                                     '<option value="fluent">fluent</option>' +                                     '<option value="native">native</option>' +                                 '</select>' +                                 '<input type="button" id="remove' + languagescounter + '" onclick="$.removelanguage(' + languagescounter + ')"' +                                         'name="remove" value="remove" class="removebutton"/>' +                                 '<br/>');             languagescounter++;             newlanguage.insertbefore($("#add"));         } 

and removal:

$.removelanguage = function(languageid) {     var languagefield = '#languages' + languageid + '\\.code';     var levelfield = '#languages' + languageid + '\\.level';     var removebutton = '#remove' + languageid;     $(languagefield).fadeout(250, function() { $(this).remove(); });     $(levelfield).fadeout(250, function() { $(this).remove(); });     $(removebutton).fadeout(250, function() { $(this).remove(); }); }; 

try using lazylist instead of autopopulatinglist. using add dynamic content html , data in model attribute object. below code using create list.

    private list<operationparameters> operationparameterses = lazylist.decorate(new arraylist<operationparameters>(), factoryutils.instantiatefactory(operationparameters.class));      @onetomany(cascade=cascadetype.all, fetch=fetchtype.lazy, mappedby="operations")     public list<operationparameters> getoperationparameterses() {         return this.operationparameterses;     }      public void setoperationparameterses(list<operationparameters> operationparameterses) {         this.operationparameterses = operationparameterses;     } 

and in controller when list populated in model attribute first check empty data in list , removes them following code , persist in database. otherwise tries insert null data in database.

operations.getoperationparameterses().removeall(collections.singleton(null)); 

hope helps you. cheers.


Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -